用C语言实现的,删除线性表中的值为奇数的元素的问题

以下是我的代码:
int i,j;
for (j=0;j<L->length;j++)
{
if(L->data[j]%2!=0)
{
for(i=j;i<L->length;i++)
{
L->data[i]=L->data[i+1];
}
L->length--; //顺序表长度减1
}
}
如果我输入“1 2 3 4 5”就能够把1、3、5去掉,但是“1 2 3 5 6”就不能。也就是如果每个奇数之间夹着一个偶数,就能把奇数全部删掉;但是如果奇数连在一起,就不可以,请教下为什么

因为你的程序中的每删除一个奇数后,就把后面全部往前移动一格,因此后面紧接着的奇数就被移动到现在的j下标,但是后面的循环直接j++,就从后一个位置开始了,所以漏掉了这个
如果是奇数的间隔大于等于1就不会出现这个问题,改改就可以了:
int i,j;
for (j=0;j<L->length;j++)
{
if(L->data[j]%2!=0)
{
for(i=j;i<L->length;i++)
{
L->data[i]=L->data[i+1];
}
L->length--; //顺序表长度减1

//这里加上一句:
j --; //为了继续删除掉移动到该位置后面紧接着的奇数
}
}
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网