数据结构线性表答案Word文档格式.docx
- 文档编号:14110403
- 上传时间:2022-10-18
- 格式:DOCX
- 页数:38
- 大小:54.03KB
数据结构线性表答案Word文档格式.docx
《数据结构线性表答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构线性表答案Word文档格式.docx(38页珍藏版)》请在冰豆网上搜索。
i++){
P->
next=(LinkList)malloc(sizeof(LNode));
P=P->
next;
data=i*2-1;
}
next=NULL;
for(i=4;
i>
=1;
i--)Ins_LinkList(L,i+1,i*2);
=3;
i++)Del_LinkList(L,i);
2.6已知L是无表头结点的单链表,且P结点既不是首元结点,也不是尾元结点,试从下列提供的答案中选择合适的语句序列。
a.在P结点后插入S结点的语句序列是__________________。
b.在P结点前插入S结点的语句序列是__________________。
c.在表首插入S结点的语句序列是__________________。
d.在表尾插入S结点的语句序列是__________________。
(1)P->
next=S;
(2)P->
next=P->
next->
(3)P->
next=S->
(4)S->
(5)S->
next=L;
(6)S->
(7)Q=P;
(8)while(P->
next!
=Q)P=P->
(9)while(P->
=NULL)P=P->
(10)P=Q;
(11)P=L;
(12)L=S;
(13)L=P;
a.(4)
(1)
b.(7)(11)(8)(4)
(1)
c.(5)(12)
d.(9)
(1)(6)
2.7已知L是带表头结点的非空单链表,且P结点既不是首元结点,也不是尾元结点,试从下列提供的答案中选择合适的语句序列。
a.删除P结点的直接后继结点的语句序列是____________________。
b.删除P结点的直接前驱结点的语句序列是____________________。
c.删除P结点的语句序列是____________________。
d.删除首元结点的语句序列是____________________。
e.删除尾元结点的语句序列是____________________。
(1)P=P->
next=P;
(4)P=P->
(5)while(P!
(6)while(Q->
=NULL){P=Q;
Q=Q->
(7)while(P->
(10)Q=P;
(11)Q=P->
(12)P=L;
(13)L=L->
(14)free(Q);
a.(11)(3)(14)
b.(10)(12)(8)(3)(14)
c.(10)(12)(7)(3)(14)
d.(12)(11)(3)(14)
e.(9)(11)(3)(14)
2.8已知P结点是某双向链表的中间结点,试从下列提供的答案中选择合适的语句序列。
a.在P结点后插入S结点的语句序列是_______________________。
b.在P结点前插入S结点的语句序列是_______________________。
c.删除P结点的直接后继结点的语句序列是_______________________。
d.删除P结点的直接前驱结点的语句序列是_______________________。
e.删除P结点的语句序列是_______________________。
priou=P->
priou->
priou;
(4)P->
priou=S;
priou=P;
(7)S->
(8)S->
(9)P->
(10)P->
(11)P->
(12)P->
(13)P->
(14)P->
(15)Q=P->
(16)Q=P->
(17)free(P);
(18)free(Q);
a.(7)(3)(6)(12)
b.(8)(4)(5)(13)
c.(15)
(1)(11)(18)
d.(16)
(2)(10)(18)
e.(14)(9)(17)
2.9简述以下算法的功能。
(1)StatusA(LinkedListL){//L是无表头结点的单链表
if(L&
&
L->
next){
Q=L;
L=L->
while(P->
next)P=P->
next=Q;
Q->
}
returnOK;
(2)voidBB(LNode*s,LNode*q){
p=s;
while(p->
=q)p=p->
p->
next=s;
voidAA(LNode*pa,LNode*pb){
//pa和pb分别指向单循环链表中的两个结点
BB(pa,pb);
BB(pb,pa);
(1)如果L的长度不小于2,将L的首元结点变成尾元结点。
(2)将单循环链表拆成两个单循环链表。
2.10指出以下算法中的错误和低效之处,并将它改写为一个既正确又高效的算法。
StatusDeleteK(SqList&
a,inti,intk)
{
//本过程从顺序存储结构的线性表a中删除第i个元素起的k个元素
if(i<
1||k<
0||i+k>
a.length)returnINFEASIBLE;
//参数不合法
else{
for(count=1;
count<
k;
count++){
//删除第一个元素
for(j=a.length;
j>
=i+1;
j--)a.elem[j-i]=a.elem[j];
a.length--;
}
//从顺序存储结构的线性表a中删除第i个元素起的k个元素
//注意i的编号从0开始
intj;
0||i>
a.length-1||k<
0||k>
a.length-i)returnINFEASIBLE;
for(j=0;
j<
=k;
j++)
a.elem[j+i]=a.elem[j+i+k];
a.length=a.length-k;
2.11设顺序表va中的数据元素递增有序。
试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性。
StatusInsertOrderList(SqList&
va,ElemTypex)
//在非递减的顺序表va中插入元素x并使其仍成为顺序表的算法
inti;
if(va.length==va.listsize)return(OVERFLOW);
for(i=va.length;
0,x<
va.elem[i-1];
i--)
va.elem[i]=va.elem[i-1];
va.elem[i]=x;
va.length++;
2.12设和均为顺序表,和分别为和中除去最大共同前缀后的子表。
若空表,则;
若=空表,而空表,或者两者均不为空表,且的首元小于的首元,则;
否则。
试写一个比较,大小的算法。
StatusCompareOrderList(SqList&
A,SqList&
B)
inti,k,j;
k=A.length>
B.length?
A.length:
B.length;
for(i=0;
if(A.elem[i]>
B.elem[i])j=1;
if(A.elem[i]<
B.elem[i])j=-1;
if(A.length>
k)j=1;
if(B.length>
k)j=-1;
if(A.length==B.length)j=0;
returnj;
2.13试写一算法在带头结点的单链表结构上实现线性表操作Locate(L,x);
intLocateElem_L(LinkList&
L,ElemTypex)
inti=0;
LinkListp=L;
while(p&
p->
data!
=x){
p=p->
i++;
if(!
p)return0;
elsereturni;
2.14试写一算法在带头结点的单链表结构上实现线性表操作Length(L)。
//返回单链表的长度
intListLength_L(LinkList&
L)
if(p)p=p-next;
while(p){
returni;
2.15已知指针ha和hb分别指向两个单链表的头结点,并且已知两个链表的长度分别为m和n。
试写一算法将这两个链表连接在一起,假设指针hc指向连接后的链表的头结点,并要求算法以尽可能短的时间完成连接运算。
请分析你的算法的时间复杂度。
voidMer
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 线性 答案