问答题
编写一个算法,实现以较高的效率从有序顺序表A中删除其值在x和y之间x≤A[i]≤y的所有元素。
【正确答案】
【答案解析】逐个检测顺序表中值在x和y之间的元素,并计数于k,再将其值大于y的元素向前移动k个元素。算法描述如下:
void DeleteXY(SList* la,int x,int y)
{
int k=0;
for(int i=0;i<a->size;i++)
{
if(a->data[i]>=x&&a->data[i]<=y)
k++;
else
a->data[i-k]=a->data[i];
}
a->n=a->n-k;
}