1、设计一个高效的算法,从顺序表L中删除所有值为x的元素,要求时间复杂度为)(n),空间复杂度为O(1);
部分函数调用参考如下:https://blog.csdn.net/qq_50504109/article/details/120273546
#include<stdio.h>
#include"InstanceLinearList.c"
int main(){
void delx(LinearList1 L,int x);
LinearList *list;
list = creatLinearList();
insert(list, 10, 1);
insert(list, 11, 2);
insert(list, 1, 3);
insert(list, 10, 4);
insert(list, 1, 5);
insert(list, 15, 6);
insert(list, 10, 7);
insert(list, 100, 8);
insert(list, 1, 9);
delx(list,1);
dispaly(list);
}
void delx(LinearList1 L,int x){
int i = 0, j = 0;
//循环到 L.last就结束
/* while (i <= L->last){
if (L->elem[i] != x){
i++;
j++;
}else{
i++;
L->elem[j] = L->elem[i];
}
}*/ // 这样子写会照成有的没有删除
//i循环到 L.last就结束 思路就相当于原地创建一个新的表,将不符合条件的去掉,
while( i <= L->last){
if (L->elem[i] != x) {
L->elem[j] = L->elem[i];
i++;
j++;
}else{
i++;
}
}
L->last = j-1;
}