数据结构题集第二章算法设计题
2.10 指出以下算法中的错误和低效(即费时)之处,并将它改写为一个既正确又高效的算法。
Status DeleteK(SqList&a,int i,int k){
//本过程从顺序结构的线性表a中删除第i个元素起的k个元素
if(i<1lk<0i+k>a.length)return INFEASIBLE;//参数不合法
else
{
for(count=1;count<k;count++){//删除一个元素
for(j=a.length;j>=i+1;j--)
a.elem[j-1]=a.elem[j];a.1ength--;
}
return OK;
}//Deletek
2.10
Status DeleteK(SqList&a,int i,int k)//删除线性表a中第i个元素起的k个元素
{
if(i<1llk<Oi+k-1>a.length)return INFEASIBLE;
for(count=1;i+count-1<=a.length-k;count++)//注意循环结束的条件
a.elem[i+count-1]=a.elem[i+count+k-1];
a.length-=k;
return OK;