02331数据结构课后练习题.docx
- 文档编号:18379365
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:53
- 大小:264.41KB
02331数据结构课后练习题.docx
《02331数据结构课后练习题.docx》由会员分享,可在线阅读,更多相关《02331数据结构课后练习题.docx(53页珍藏版)》请在冰豆网上搜索。
02331数据结构课后练习题
第1章概论
练习题
一、单项选择题
1.在数据结构中,从逻辑上可以把数据结构分为(B)
A.紧凑结构与非紧凑结构B.线性结构与非线性结构
C.内部结构与外部结构D.动态结构与静态结构
2.若结点得存储地址与其关键字之间存在某种映射关系,则称这种存储结构为(D)
A.顺序存储结构B.链式存储结构
C.索引存储结构D.散列存储结构
3.算法分析得两个主要方面就是(B)
A.正确性与简明性B.时间复杂性与空间复杂性
C.可读性与可维护性D.数据复杂性与程序复杂性
4.线性表采用链式存储结构时,要求内存中可用存储单元地址(A)
A.不一定连续得B.部分地址必须就是连续得
C.必须就是连续得D.一定就是不连续得
5.算法指得就是(C)
A.计算机程序B.解决问题得计算方法
C.解决问题得有限运算序列D.排序算法
二、填空题
6.数据结构一般包括逻辑结构、存储结构与数据运算三个方面得内容.
7.数据得逻辑结构可分为线性结构、非线性结构两大类.
8.数据得存储结构(物理结构)一般可以用顺序存储结构、链式存储结构、索引存储结构及散列存储结构等四种存储方法表示.
9.在选用求解一个问题得算法时,除了首先考虑算法就是“正确得”之外,还主要考虑执行算法所需要得时间、执行算法所需要得存储空间及算法应易于理解、易于编程、易于调试等三点。
10.设有一批数据元素,为了最快地存取某元素,宜用顺序结构存储,为了方便得插入一个元素,宜用链式结构存储.
三、应用题
设n为正整数,利用大“O”记号,写出下列各程序段得时间复杂度.
11.for(i=1;i<=n;i++){
y=y+1;
for(j=1;j<=2*n;j++)
x=x+1;
}
分析:
语句“y=y+1;”执行n次,语句“x=x+1;”各执行次,故该程序段得时间复杂度为O().
12.s=0;
while(n>=(s+1)*(s+1))
s=s+1;
分析:
语句“s=s+1;”执行次,故该程序段得时间复杂度为O().
13.x=1;
sum=0;
for(i=0;i<=n;i++){
x=x*i;
sum=sum+x;
}
分析:
语句“x=x*i”与“sum=sum+x;”各执行n次,故该程序段得时间复杂度为O(n).
14.for(i=1;i<=n;i++)
if(3*i<=n)
for(j=3*i;j<=n;j++){
x++;
y=3*x+2;
}
分析:
语句“x++”与“y=3*x+2;”各执行次,故该程序段得时间复杂度为O().
15.for(i=1;i<=n;i++)
for(j=1;j<=i;j++){
x=x+1;
}
分析:
语句“x=x+1;”执行次,故该程序段得时间复杂度为O().
16.sum=0;i=0;
while(i<=100){
sum=sum+i;
i++;
}
分析:
语句“sum=sum+i;”与“i++;”各执行100次,故该程序段得时间复杂度为O
(1).
17.x=1;
s=0;
for(i=1;i<=n;i++){
++x;
s+=x;
}
for(j=1;j<=n;j++)
for(k=1;k<=n;k++){
x++;
s=s+x;
}
分析:
语句“++x;”执行n次,语句“x++;”与“s=s+x;”各执行次,故该程序段得时间复杂度为O().
第2章线性表
练习题
一、单项选择题
1.在长度为n得顺序表得第i个位置上插入一个元素,元素得移动次数为(A)
A.B.C.D.
2.若一个顺序表中第一个元素得存储地址为1000,每个元素占4个地址单元,那么,第6个元素得存储地址应就是(A)
A.1020B.1010C.1016D.1024
3.带头结点得单链表(以head为头指针)为空得判断条件就是(C)
A.head!
=NULLB.head->next==head
C.head->next==NULLD.head==NULL
4.在单循环链表中,p指向表任一结点,判断表不就是访问结束得条件就是(B)
A.p!
=NULLB.p!
=headC.p->next!
=headD.p->next!
=NULL
5.在一个单链表中,已知q指向p所指向结点得前趋结点,若在p、q所指结点之间插入一个s所指向得新结点,则执行得操作就是(A)
A.q->next=s;s->next=pB.p->next=s;s->next=q
C.s->next=p->next;p->next=sD.p->next=s->next;s->next=p
6.在一个单链表中,若删除p指向结点得后继结点,则执行得操作就是(A)
A.q=p->next;p->next=p->next->next;free(q);
B.p=p->next;q=p->next;p=q->next;free(q);
C.q=p->next->next;p=p->next;free(q);
D.p=p->next->next;q=p->next;free(q);
二、填空题
7.在一个长度为n得顺序表中删除第i个元素,需要向前移动n-i个元素.
8.在顺序表中插入或删除一个元素,需要平均移动表长得一半个元素,具体移动得元素个数与插入或删除得位置有关.
9.顺序表中逻辑上相邻得元素在物理存储位置上一定相邻,链表结构中逻辑上相邻得元素在物理位置上不一定相邻.
10.已知顺序表中一个元素得存储位置就是x,每个元素占c个字节,求其后继元素位置计算公式为x+c,而已知单链表中某一结点由p指向,求此后继结点存储地址得操作为p->next.
11.在用p指针访问单链表时,判断不就是访问结束得条件就是p!
=NULL;在访问单循环链表时,判断不就是访问表结束得条件就是p!
=head.
12.已知p指向双向链表得中间某个结点,从给定得操作语句中选择合适得填空.
(1)在p结点后插入s结点得语句序列就是I、G、A、D.
(2)在p结点前插入s结点得语句序列就是C、N、H、B.
(3)删除p结点得直接后继结点得语句序列就是J、Q、E、M.
(4)删除p结点得直接前趋结点得语句序列就是K、P、F、M.
(5)删除p结点得语句序列就是O、R、L.
A.p->next=sB.p->prior=sC.s->next=p
D.s->prior=pE.p->next=p->next->nextF.p->prior=p->prior->prior
G.p->next->prior=sH.p->prior->next=sI.s->next=p->next
J.q=p->nextK.q=p->priorL.free(p)
M.free(q)N.s->prior=p->priorO.p->prior->next=p->next
P.p->prior->prior->next=pQ.p->next->next->prior=pR.p->next->prior=p->prior
13.下面就是一个在带头结点得单链表head中删除所有数据域值为x得结点得算法,但不完善,请在相应得地方填上适当得语句,使之成为完整得算法.
voidDeleX(LinkListhead,DataTypex)
{
LinkNode*p,*q,*s;
P=head;
q=p->next;
while(q!
=NULL)
if(q->data==x)
{
s=q;
q=q->next;
free(s);
p->next=q;
}
else
{
p=q;
q=q->next;
}
}
三、算法设计题
14.设有两个顺序表A与B,且都递增有序。
试写一算法,从A中删除与B中相同得那些元素(即计算A-B).
SeqListSubtraction(SeqListA,SeqListB)
{
inti,j,k=0;//令匹配位置为0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 02331 数据结构 课后 练习题