有哪位好人,帮助解答一下

img

下面这个更高效一点。

int i,j;
if(L.length<1) return false;
for(i=0; i<L.length && L.elem[i]>0; i++);
j=i;
i++;
while(i<L.length)
{
if(L.elem[i]>0)
{
L.elem[j]=L.elem[i];
j++;
}
i++;
}
L.length=j;
return true;

创建一个新的空顺序表,直接遍历原顺序表判断所有元素,如果该元素大于等于0,则把该元素添加到新顺序表里面。

不确定这个是否满足高效,看有其他人有更好的高效算法没。

直接写一下主要代码给你,其它的自行脑补

int i,j;

if(L.length<1) return false;

i=0;
j=0;

while(i<L.length)
{
if(L.elem[i]>0)
{
if(j!=i) L.elem[j]=L.elem[i];
j++;
}
i++;
}
L.length=j;

return true;