iOS进阶

线性表删除

2017-07-27  本文已影响3人  泰克2008

效率较高:

void listRemoveValue(LinearList * list,LinearListNodeValue value){
   if (list == NULL) return;
   //定义一个初始值记录需要删除的个数
   int removeCount = 0;
   //遍历所有元素
   for (int i = 0 ; i < list->length; i++) {
       if (list->values[i]==value) {//是需要删除的
           //让删除的个数加1
           removeCount++;
       }else{//不删除就挪动
           list->values[i - removeCount] = list->values[i];
       }
   }
   //最后将长度减去删除的个数
   list->length -= removeCount;
}

效率较低:

void listRemoveValue(LinearList * list,LinearListNodeValue value){
    if (list == NULL) return;
    //遍历所有元素
    for (int i = 0 ; i < list->length; i++) {
        while (list->values[i] == value && i< list->length) {//是需要删除的!!
            //干掉当前的数据
            listRemove(list, i);
            list->length--;
        }
    }
}
上一篇 下一篇

猜你喜欢

热点阅读