问题 问答题

编写一个算法,实现以较高的效率从有序顺序表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; }

选择题
选择题