用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”就不能。也就是如果每个奇数之间夹着一个偶数,就能把奇数全部删掉;但是如果奇数连在一起,就不可以,请教下为什么

12346因为你在删除奇数3的时候将后面的顺序表前移了一位,所以下一次判断的时候就会将5省略掉了

解决方式:将第一个for循环中的j++放到判断是否为奇数,是删除,并且长度减1,不是奇数j++,

int i,j;
for (j=0;j<L->length;)
{
if(L->data[j]%2!=0)
{
for(i=j;i<L->length;i++)
{
L->data[i]=L->data[i+1];
}
L->length--; //顺序表长度减1
} else j++;
}
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

大家正在搜

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