效率较高:
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--;
}
}
}