
求关于数据结构的一些问题答案
指出以下算法中的错误和低效(即费时)之处,并将它改写为一个既正确又高效的算法。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; 展开
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; 展开
展开全部
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;
//本过程从顺序存储结构的线性表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 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询