求关于数据结构的一些问题答案

指出以下算法中的错误和低效(即费时)之处,并将它改写为一个既正确又高效的算法。StatusDeleteK(SqList&a,inti,intk){//本过程从顺序存储结构... 指出以下算法中的错误和低效(即费时)之处,并将它改写为一个既正确又高效的算法。
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-1] = a.elem[j];
a.length - -;
}
return OK;
} // DeleteK

注:上题涉及的类型定义如下:
# define LIST INIT SIZE 100
# define LISTINCREMENT 10
typedef struct {
Elem Type *elem; //存储空间基址
Int length; //当前长度
Int listsize; //当前分配的存储容量
}SqList;
展开
 我来答
dixnuits
推荐于2016-12-01 · TA获得超过1375个赞
知道小有建树答主
回答量:1560
采纳率:0%
帮助的人:1432万
展开全部
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-1] = a.elem[j];
a.length - -;
}
return OK; */

///改正后的
for ( j=i; j<=k+i; j++) a.elem[j] = a.elem[j+k];

} // DeleteK
return OK;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式