数据结构单元2练习参考答案Word格式.docx
- 文档编号:15083180
- 上传时间:2022-10-27
- 格式:DOCX
- 页数:13
- 大小:34.95KB
数据结构单元2练习参考答案Word格式.docx
《数据结构单元2练习参考答案Word格式.docx》由会员分享,可在线阅读,更多相关《数据结构单元2练习参考答案Word格式.docx(13页珍藏版)》请在冰豆网上搜索。
(11)线性表中第一个结点没有直接前趋,称为开始结点。
(12)在一个长度为n的顺序表中删除第i个元素,要移动n-i个元素。
(13)在一个长度为n的顺序表中,如果要在第i个元素前插入一个元素,要后移n-i+1个元素。
(14)在无头结点的单链表中,第一个结点的地址存放在头指针中,而其它结点的存储地址存放在
前趋结点的指针域中。
(15)当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快速度存取线性表
中的元素时,应采用顺序存储结构。
(16)在线性表的链式存储中,元素之间的逻辑关系是通过指针决定的。
(17)在双向链表中,每个结点都有两个指针域,它们一个指向其前趋结点,另一个指向其后继结点。
(19)
双链表中,设p是指向其中待删除的结点,则需要执行的操作为:
p>
prior->
next=p>
next;
p
->
next->
prior=p->
prior。
(20)
在如图所示的链表中,若在指针P所在的结点之后插入数据域值为a和b的两个结
点,则可用下列两个语句:
S->
next-〉next=P->
next和P->
next=S来实现该操作。
三.选择题
(1)在具有n个结点的单链表中,实现(
)的操作,其算法的时间复杂度都是
O(n)。
A.遍历链表或求链表的第i个结点
B.在地址为P的结点之后插入一个结点
D•删除地址为P的结点的后继结点
C.删除开始结点
(2)设a、b、c为三个结点,p、10、20分别代表它们的地址,则如下的存储结构称为(
B)°
10
20
A.循环链表
B.单链表
C.双向循环链表
D.双向链表
(3)单链表的存储密度(C)°
A.大于1
B.等于1
C.小于1
D.不能确定
(4)已知一个顺序存储的线性表,设每个结点占个结点的地址为(A)°
m个存储单元,若第一个结点的地址为B,则第i
B.B+i*m
C.B-i*m
A.B+(i-1)*m
(5)在有n个结点的顺序表上做插入、删除结点运算的时间复杂度为(
2.O(n)C.O(n)
.B+(i+1)*m
A.0
(1)
(6)设Llink、Rlink
表L的尾元素的条件是
分别为循环双链表结点的左指针和右指针,则指针
.O(log2n)
P所指的元素是双循环链
D)°
A.P==L
.P->
Llink==L
C.P==NULL
Rlink==L
(7)两个指针P和Q,分别指向单链表的两个元素,
P所指元素是Q所指元素前驱的条件是(B)°
A.P->
next==Q->
nextB.P->
next==Q
Q->
next==PD.P==Q
(8)用链表存储的线性表,其优点是(
C)°
A.便于随机存取
花费的存储空间比顺序表少
C.便于插入和删除
(9)在单链表中,增加头结点的目的是(
数据元素的物理顺序与逻辑顺序相同
A.使单链表至少有一个结点
标志表中首结点的位置
C.方便运算的实现
(10)下面关于线性表的叙述中,错误的是(
D.
)关系。
说明该单链表是线性表的链式存储结构
A.顺序表必须占一片地址连续的存储单元
C.链表不必占用一片地址连续的存储单元
(11)L是线性表,已知LengthList(L)的值是值是(C)。
A.2B.3
(12)单链表的示意图如下:
B•顺序表可以随机存取任-「兀素
D•链表可以随机存取任-「元素
5,经DelList(L,2)运算后,LengthList(L)的
C.4D.5
L
指向链表Q结点的前趋的指针是(B)。
A.LB.PC.QD.R
(13)设p为指向单循环链表上某结点的指针,则*p的直接前驱(C)。
A.找不到B.查找时间复杂度为0
(1)
C.查找时间复杂度为O(n)D.查找结点的次数约为n
(14)
需平均移动结点的数目为(C)。
等概率情况下,在有n个结点的顺序表上做插入结点运算,
A.nB.(n-1)/2C.n/2D.(n+1)/2
(15)在下列链表中不能从当前结点出发访问到其余各结点的是(C)。
A.双向链表B.单循环链表C.单链表D.双向循环链表
(16)在顺序表中,只要知道(D),就可以求出任一结点的存储地址。
A.基地址B.结点大小C
.向量大小D.基地址和结点大小
(17)在双链表中做插入运算的时间复杂度为(
A)。
A.O
(1)B.O(n)C
2
O(n)D.O(log加)
(18)链表不具备的特点是(A)。
A.随机访问
B
.不必事先估计存储空间
C.插入删除时不需移动兀素
D
.所需空间与线性表成正比
(19)以下关于线性表的论述,不正确的为(
C
)。
A.线性表中的元素可以是数字、字符、记录等不同类型
B.线性顺序表中包含的元素个数不是任意的
C.线性表中的每个结点都有且仅有一个直接前趋和一个直接后继
D.存在这样的线性表,即表中没有任何结点
(20)在(B)的运算中,使用顺序表比链表好。
A.插入
B.根据序号查找C.删除
D.根据元素查找
4.下述算法的功能是什么?
voidDemo2(ListNode*p,ListNode*q){IIp,*q是链表中的两个结点
DataTypetemp;
temp=p->
data;
p_>
data=q_>
q->
data=temp;
}
ListNode*Demo1(LinkListL,ListNode*p)
{//L是有头结点的单链表
ListNode*q=L->
While(q&
&
next!
=p)
q=q_>
if(q)
returnq;
else
Error(“*pnotinL”);
解:
(1)返回结点*p的直接前趋结点地址。
(2)交换结点*p和结点*q(p和q的值不变)
5.程序填空
1•已知线性表中的元素是无序的,并以带表头结点的单链表作存储。
试写一算法,删除表中所有大于min,小于max的元素,试完成下列程序填空。
Voiddelete(Iklisthead;
datatypemin,max)
{q=head->
while(p!
=NULL)
{if((p->
data<
=min)||(p->
data>
=max)
{q=p;
p=p->
next;
}
{q_>
next=p_>
next;
delete(p);
p=q_>
2.在带头结点head的单链表的结点a之后插入新元素x,试完成下列程序填空。
structnode
{elemtypedata;
node*next;
};
voidlkinsert(node*head,elemtypex)
{node*s,*p;
s=newnode;
s->
data=x;
p=head->
=NULL)&
(p->
data!
=a)
_p=p_>
next;
if(p==NULL)
cout<
<
"
不存在结点a!
"
;
else{s->
next=p->
next
p>
next=s
6.程序设计题
1.写一个对单循环链表进行遍历(打印每个结点的值)的算法,已知链表中任意结点的地址为P。
2.对给定的带头结点的单链表L,编写一个删除L中值为x的结点的直接前趋结点的算法。
3.将一个顺序表中从第i个结点开始的k个结点删除。
4.已知一个单链表,编写一个函数从单链表中删除自第i个结点起的k个结点。
5.有一个单链表(不同结点的数据域值可能相同),其头指针为head,编写一个函数计算值域为x
的结点个数。
6.有两个循环单链表,链头指针分别为head1和head2,编写一个函数将链表head1链接到链表head2,链接后的链表仍是循环链表。
1.解:
voidShow(ListNode*P)
{ListNode*t=P;
do
{printf(”%c"
t->
data);
t=t->
rear;
while(t!
=P);
2.解:
voiddelete(ListNode*L)
{ListNode*p=L,*q;
if(L->
data==X)
{printf(“值为x的结点是第一个结点,没有直接前趋结点可以删除”);
return;
for(;
p->
next->
=X;
q=p;
p=p->
next);
//删除指针p所指向的结点
q_>
next=p->
deletep;
3.解
voidDel(SeqList*L,inti,intk)
{intj=i-1+k;
for(j=0;
j<
k;
j++)
{L->
data[i-1+j]=L->
data[i+k-2+j];
if(i+k-2+j>
L->
last)
break;
{intj
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 单元 练习 参考答案