顺序表的结果设计如下所示
顺序表的结构体设计和头节点的结构体设计如下链接:
来看这个思路分析:
来看代码实现:
void Reamove_all(PSeqList plist, int val) //val就是要再顺序表中删除的数据
{
assert(plist != NULL);
int j = 0;
for (int i = 1; i < plist->cursize; i++)
{
if (plist->data[i] != val)
{
j++;
plist->data[j] = plist->data[i];
}
}
plist->cursize = j + 1;
}
对于上述代码 如果顺序表首个数据是 12 呢 这样的话按照上面的的代码 第一个数据就会被跳过 导致最后结果达不到预期效果
对此 代码该怎么改呢?
方法一:
代码的话 改一下i j的初值就好:
void Reamove_all(PSeqList plist, int val) //val就是要再顺序表中删除的数据
{
assert(plist != NULL);
int j = -1;
for (int i = 0; i < plist->cursize; i++)
{
if (plist->data[i] != val)
{
j++;
plist->data[j] = plist->data[i];
}
}
plist->cursize = j + 1;
}
方法二:
代码实现:
void Reamove_all(PSeqList plist, int val) //val就是要再顺序表中删除的数据
{
assert(plist != NULL);
int j = 0;
for (int i = 0; i < plist->cursize; i++)
{
if (plist->data[i] != val)
{
plist->data[j] = plist->data[i];
j++;
}
}
plist->cursize = j;
}