| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 525 人关注过本帖
标题:求解一道数据结构题 C语言的....
取消只看楼主 加入收藏
hellengoodd
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2011-4-17
结帖率:75%
收藏
 问题点数:0 回复次数:1 
求解一道数据结构题 C语言的....
2.10 指出以下算法中的错误和低效之处,并将它改写为一个既正确又高效的算法。
Status DeleteK(SqList &a,int i,int k)
{
 //本过程从顺序存储结构的线性表a中删除第i个元素起的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-i]=a.elem[j];
   a.length--;
  }
 return OK;
}
解:
Status DeleteK(SqList &a,int i,int k)
{
 //从顺序存储结构的线性表a中删除第i个元素起的k个元素
 //注意i的编号从0开始
 int j;
 if(i<0||i>a.length-1||k<0||k>a.length-i) return INFEASIBLE;
 for(j=0;j<=k;j++)
  a.elem[j+i]=a.elem[j+i+k];
 a.length=a.length-k;
 return OK;
}
这个答案是不是错了的...我觉得删除一个顺序表元素必须移动length-(k+i)个元素啊 for(j=0;j<=k;j++)
  a.elem[j+i]=a.elem[j+i+k];  是不是应该改为for(j=0;j<=length-(k+i);j++)
  a.elem[j+i]=a.elem[j+i+k];
搜索更多相关主题的帖子: return 线性表 C语言 元素 
2011-04-17 10:41
hellengoodd
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2011-4-17
收藏
得分:0 
谢谢诸葛大虾~
2011-04-17 21:45
快速回复:求解一道数据结构题 C语言的....
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030494 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved