主题:求教一下
我才开始学数据结构 有些基本的问题 希望大家帮帮
今天做作业是遇到这样一个问题
先看看程序
Status DeleteK(SqList &a,int i,int k)
{ if(i<1||k<0||i+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.length--;
}
return Ok;
}//DeleteK
求找出错误 i<1||k<0||i+k>a.length 判断 我觉得有错
比如 线性表 11 33 44 99 22 66 当i=2 k=5 此时 a.length=6 2+4=6 不满足 判断条件 所以 我认为要将 判断条件改为(i<1||k<0||i+k>a.length+1)
还有个问题就是 成代码低效 很显然 每次只能删除一个元素 这需要修改
我想了一段时间 就看了答案 答案是这样写的
if( i<1||k<0||i+k>a.length) return --
else
{ for(j=i+k;j<a.length;j++)
a.elem[j-k]=a.elem[j];
a.length=a.length-k;}
首先 i<1||k<0||i+k>a.length也我修改的 不同 在则 答案中j=i+k 按上述假设 j=i+k=6 而a.length=6 不满足 for 循环中的判断 所以要退出 我不知道 我分析那里错了 请高手帮我分析一下 谢谢了
今天做作业是遇到这样一个问题
先看看程序
Status DeleteK(SqList &a,int i,int k)
{ if(i<1||k<0||i+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.length--;
}
return Ok;
}//DeleteK
求找出错误 i<1||k<0||i+k>a.length 判断 我觉得有错
比如 线性表 11 33 44 99 22 66 当i=2 k=5 此时 a.length=6 2+4=6 不满足 判断条件 所以 我认为要将 判断条件改为(i<1||k<0||i+k>a.length+1)
还有个问题就是 成代码低效 很显然 每次只能删除一个元素 这需要修改
我想了一段时间 就看了答案 答案是这样写的
if( i<1||k<0||i+k>a.length) return --
else
{ for(j=i+k;j<a.length;j++)
a.elem[j-k]=a.elem[j];
a.length=a.length-k;}
首先 i<1||k<0||i+k>a.length也我修改的 不同 在则 答案中j=i+k 按上述假设 j=i+k=6 而a.length=6 不满足 for 循环中的判断 所以要退出 我不知道 我分析那里错了 请高手帮我分析一下 谢谢了