知识大全 数据结构与算法线性表复习习题3
Posted 结点
篇首语:学者有自立之志,当拔出流俗,不可泛泛与世浮沉。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构与算法线性表复习习题3相关的知识,希望对你有一定的参考价值。
指出以下算法中的错误和低效之处 并将它改写为一个既正确又高效的算法
Status DeleteK(SqList &a int i int k)
//本过程从顺序存储结构的线性表a中删除第i个元素起的k个元素
if(i< ||k< ||i+k>a length) return INFEASIBLE;//参数不合法
else
for(count= ;count<k;count++)
//删除第一个元素
for(j=a length;j>=i+ ;j ) a elem[j i]=a elem[j];
a length ;
return OK;
解
Status DeleteK(SqList &a int i int k)
//从顺序存储结构的线性表a中删除第i个元素起的k个元素
//注意i的编号从 开始
int j;
if(i< ||i>a length ||k< ||k>a length i) return INFEASIBLE;
for(j= ;j<=k;j++)
a elem[j+i]=a elem[j+i+k];
a length=a length k;
return OK;
设顺序表va中的数据元素递增有序 试写一算法 将x插入到顺序表的适当位置上 以保持该表的有序性
解
Status InsertOrderList(SqList &va ElemType x)
//在非递减的顺序表va中插入元素x并使其仍成为顺序表的算法
int i;
if(va length==va listsize)return(OVERFLOW);
for(i=va length;i> x<va elem[i ];i )
va elem[i]=va elem[i ];
va elem[i]=x;
va length++;
return OK;
试写一算法在带头结点的单链表结构上实现线性表操作Locate(L x);
解
int LocateElem_L(LinkList &L ElemType x)
int i= ;
LinkList p=L;
while(p&&p >data!=x)
p=p >next;
i++;
if(!p) return ;
else return i;
试写一算法在带头结点的单链表结构上实现线性表操作Length(L)
解
//返回单链表的长度
int ListLength_L(LinkList &L)
int i= ;
LinkList p=L;
if(p) p=p next;
while(p)
p=p >next;
i++;
return i;
已知指针ha和hb分别指向两个单链表的头结点 并且已知两个链表的长度分别为m和n 试写一算法将这两个链表连接在一起 假设指针hc指向连接后的链表的头结点 并要求算法以尽可能短的时间完成连接运算 请分析你的算法的时间复杂度
解
void MergeList_L(LinkList &ha LinkList &hb LinkList &hc)
LinkList pa pb;
pa=ha;
pb=hb;
while(pa >next&&pb >next)
pa=pa >next;
pb=pb >next;
if(!pa >next)
hc=hb;
while(pb >next) pb=pb >next;
pb >next=ha >next;
else
hc=ha;
while(pa >next) pa=pa >next;
pa >next=hb >next;
cha138/Article/program/sjjg/201311/23409
相关参考
假设在算法描述语言中引入指针的二元运算异或若a和b为指针则a⊕b的运算结果仍为原指针类型且 a⊕(a⊕b)=(a⊕a)⊕b=b
试写一算法对单链表实现就地逆置 解 //带头结点的单链表的逆置 StatusListOppose_L(LinkList&L) LinkListpq; p=L; p=p>
已知指针la和lb分别指向两个无头结点单链表中的首元结点下列算法是从表la中删除自第i个元素起共len个元素后将它们插入到表lb中第i个元素之前试问此算法是否正确?若有错请改正之 StatusD
要求同题试对单链表编写求C的算法 解 //将AB求交后的结果放在C表中并删除B表 StatusListCross_L(Li
已知AB和C为三个递增有序的线性表现要求对A表作如下操作删去那些既在B表中出现又在C表中出现的元素试对顺序表编写实现上述操作的算法并分析你的算法的时间复杂度(注意题中没有特别指明同一表中的元素值各
第章 线性表 描述以下三个概念的区别头指针头结点首元结点(第一个元素结点) 解头指针是指向链表中第一个结点的指针首元结点是指链表中存储第一个数据元素的结点头结点是在首元结点之前附设的
已知有一个单向循环链表其每个结点中含三个域predata和next其中data为数据域next为指向后继结点的指针域pre也为指
已知L是无表头结点的单链表且P结点既不是首元结点也不是尾元结点试从下列提供的答案中选择合适的语句序列 a在P结点后插入S结点的语句序列是__________________ b在P结点前插入S
判断下列各对函数f(n)和g(n)当时n→∞哪个函数增长更快? 试用数学归纳法证明 试写一算法自大至小依次输出顺序读入的三个
已知长度为n的线性表A采用顺序存储结构请写一时间复杂度为(n)空间复杂度为()的算法该算法删除线性表中所有值为item的数据元素(O()表示算法的辅助空间为常量) 【北京航空航天大学五(分)】