删除出顺序表中的某个元素
直接暴力
List Delete( List L, ElementType minD, ElementType maxD )
{
int i=0,j=0;
while(i<=L->Last)
{
/*就是每有以为元素符合删除条件就把当前元素后面的所有元素均向前移动一位,然后Last-1;*/
if(L->Data[i]>minD&&L->Data[i]<maxD)
{
for(j=i;j<=L->Last;j++)
{
L->Data[j]=L->Data[j+1];
}
L->Last--;
}
else
i++;
}
return L;
}
最佳算法
bool Delete( List L, Position P )
{
int i,n;
if((P<0)||(P>(L->Last)))//判断是否在范围内
{
printf("POSITION %d EMPTY",P);
return false;
}
for(i=0,n=0;n<=L->Last;n++)
{
if(i!=P)
{
L->Data[i]=L->Data[n];
i++;
L->Last--;
}
}
return L;
}```