顺序表的存储结构:
typedef struct{
int data[Maxsize]; //存在顺序表中的元素
int length; //存放顺序表的长度
}SqList;
分析:
这里要删除顺序表的所有值为x的结点,跟单链表那题题意相同。
主要区别就是:存储结构不同
这里是顺序存储结构
单链表是链式存储结构
所以解题方法也跟链表的不一样。
这里采用:相等加一,不等前移k
我们用k记录下元素值等于x的元素个数,其初始值为0.
如果L.data[i] 等于x,那么k++;
若不等于,将其前移k个位置。即存放在L.data[i-k] = k; //前移k个位置。
思路:
1.定义循环变量i,和记录相等的个数k
2.通过while循环。条件为i< L.length.
如果L.data[i] 等于x,那么k++;
若不等于,将其前移k个位置。即存放在L.data[i-k] = k; //前移k个位置。
3.表长置为:L.length = k;
C代码实现:
void delsll1(SqList &L,int x){
int i = 0,k = 0;
while(i<L.length){
if(L.data[i] == x){
k++;
}else{
L.data[i-k] =L.data[k]; //相等加一,不等前移k
}
L.length = k; //表长置为k
}
}