!C语言有关问题

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

------解决方案--------------------
LZ你这样边删元素边移动,长度不好控制啊,以前奇偶性在中间不好判断,你全删除完了之后再移动偶数位置的元素吧
------解决方案--------------------
建议把for()中的j++ 去掉,补一个else j++;这样只有判断现在位子上的是偶数的时候在移动数组。楼主可以试试

------解决方案--------------------
如果是偶数J++
否而不用J++
------解决方案--------------------
就明白点吧
第一个1是奇数
所以删掉1 其实这时候0的位置就是变成了2
如果继续j++
它其实没有判断2这个数···
这就导致两个连续奇数只有一个被判断···
------解决方案--------------------
L->length--; 后加一句 j--;就行了。