数据结构题库课后练习题答案章节测试题19章全Word格式文档下载.docx
《数据结构题库课后练习题答案章节测试题19章全Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据结构题库课后练习题答案章节测试题19章全Word格式文档下载.docx(147页珍藏版)》请在冰豆网上搜索。
4.不是数据的逻辑结构是__________。
A、散列结构B、线性结构C、树结构D、图结构
5.不是数据的存储结构是__________。
A、散列结构B、顺序结构C、链接结构D、线性结构
6.同一记录结构中的各数据项的类型__________一致。
A、必须B、不必C、不能D、不可能
8.组成数据的基本单位是__________。
A、数据项B、数据类型C、数据元素D、数据变量
9.设数据结构A=(D,R),其中D={1,2,3,4},R={r},r={<
1,2>
,<
2,3>
,<
3,4>
4,1>
},则数据结构A是__________。
A、线性结构B、树型结构C、图型结构D、集合
10.设某数据结构的二元组形式表示为A=(D,R),D={01,02,03,04,05,06,07,08,
09},R={r},r={<
01,02>
01,03>
01,04>
02,05>
02,06>
03,07>
,
<
03,08>
03,09>
A、线性结构B、树型结构C、物理结构D、图型结构
11.对一个算法的评价,不包括如下__________方面的内容。
A、健壮性和可读性B、并行性C、正确性D、时空复杂度
12.算法的五个重要特性是________?
A、可执行性、可移植性、可扩充性、输入和输出。
B、可行性、确定性、有穷性、输入和输出。
C、确定性、有穷性、稳定性、输入和输出。
D、可执行性、可移植性、可扩充性、输入和输出。
13.算法分析的两个方面是________。
A、空间复杂性和时间复杂性B、正确性和简明性
C、可读性和文档性D、数据复杂性和程序复杂性
14.算法分析的目的是__________?
A、找出数据结构的合理性B、研究算法中的输入和输出的关系
C、分析算法的效率以求改进D、分析算法的易懂性和文档性
15.以下算法的空间复杂度是__________。
#include
#definen10
cout(intA[])
{
intB[n],i;
for(i=0;
N;
I++)<
p>
B[n-i-1]=A[i];
printf("
%d"
B[i]);
}
A、O
(1)B、O(n)C、O(log2n)D、O(n*n)
16.下面程序的时间复杂为__________。
for(i=1,s=0;
=n;
i++)
{
t=1;
for(j=1;
j<
=i;
j++)
t=t*j;
A、O(n)B、O(n2)C、O(n3)D、O(n4)
17.一个算法的时间复杂度为(9n2+2nlogn+2)/(5n),其数量级表示为________。
A、O
(1)B、O(n2)C、O(log2n)D、O(n)
18.阅读以下的程序段,它的时间复杂度为__________。
for(i=1;
=m;
++i)
for(j=1;
=n;
++j)
c[i][j]=0;
A、O(n)B、O(m+2n)C、O(m+n)D、O(m*n)
19.程序段s=i=0;
do{i=i+1;
s=s+i;
}while(i<
=n);
的时间复杂度为()。
A、O(n)B、O(nlog2n)C、O(n2)D、O(n/2)
20.下列程序段的时间复杂度为__________。
for(i=0;
m;
i++)for(j=0;
t;
j++)c[i][j]=0;
j++)for(k=0;
k<
n;
k++)c[i][j]=c[i][j]+a[i][k]*b[k][j];
A、O(m*n*t)B、O(m+n+t)C、O(m+n*t)D、O(m*t+n)
21.在数据结构中,与所使用的计算机无关的是数据的__________结构。
A、逻辑B、存储C、逻辑和存储D、物理
22.数据结构在计算机中的表示是指__________?
A、数据的逻辑结构B、数据结构C、数据的存储结构D、数据元素之间的关系
23.下面__________的时间复杂性最好,即执行时间最短。
A、O(n)B、O(log2n)C、O(nlog2n)D、O(n2)
三、判断题
1.程序越短,程序运行的时间就越少。
2.数据结构包括数据间的逻辑结构、数据的存储方式和数据的运算三个方面。
四、简答题
1.数据的逻辑结构有哪几种?
常用的存储有哪几种?
2.举一个数据结构的例子,叙述其逻辑结构、存储结构和运算三方面的内容。
3.什么叫算法?
它有哪些特性?
4.有下列几种用二元组表示的数据结构,画出它们分别对应的逻辑结构图,并指出它们分别以属于何种结构。
(1)A=(K,R),其中
K={a,b,c,d,e,f,g,h}
R={r}
r={<
a,b>
<
b,c>
c,d>
d,e>
e,f>
f,g>
g,h>
(2)B=(K,R),其中
K={a,b,c,d,e,f,g,h}
d,b>
d,g>
d,a>
g,e>
(3)B=(K,R),其中
K={1,2,3,4,5,6}
r={(1,2),(2,3),(2,4),(3,4),(3,5),(3,6),(4,5),(4,6)}
5.简述下列术语:
数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。
解:
数据是对客观事物的符号表示。
在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。
数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
数据对象是性质相同的数据元素的集合,是数据的一个子集。
数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
存储结构是数据结构在计算机中的表示。
数据类型是一个值的集合和定义在这个值集上的一组操作的总称。
抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。
是对一般数据类型的扩展。
6.试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。
抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。
一般数据类型由具体语言系统内部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。
抽象数据类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。
在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。
7.设有数据结构(D,R),其中
试按图论中图的画法惯例画出其逻辑结构图。
8.设n为正整数。
试确定下列各程序段中前置以记号@的语句的频度:
(1)i=1;
k=0;
while(i<
=n-1){
@k+=10*i;
i++;
}
(2)i=1;
do{
}while(i<
=n-1);
(3)i=1;
while(i<
=n-1){
(4)k=0;
for(i=1;
i++){
for(j=i;
@k++;
(5)for(i=1;
for(j=1;
=i;
j++){
for(k=1;
=j;
k++)
@x+=delta;
(6)i=1;
j=0;
while(i+j<
=n){
@if(i>
j)j++;
elsei++;
(7)x=n;
y=0;
//n是不小于1的常数
while(x>
=(y+1)*(y+1)){
@y++;
(8)x=91;
y=100;
while(y>
0){
@if(x>
100){x-=10;
y--;
elsex++;
(1)n-1
(2)n-1
(3)n-1
(4)n+(n-1)+(n-2)+...+1=
(5)1+(1+2)+(1+2+3)+...+(1+2+3+...+n)=
=
(6)n
(7)
向下取整
(8)1100
五、程序算法题
1.设n为整数,求下列各程序段的时间复杂度
(1)i=1;
k=2;
While(i<
n){
k=k+10*I;
i=i+1;
(2)i=1;
j=0;
While(i+j<
=n)
If(i>
j)j=j+1;
Elsei=i+1;
(3)x=91;
y=100
While(y>
0)
If(x>
100){
x=x-10;
y=y-1;
}elsex=x+1;
2.试写一算法,自大至小依次输出顺序读入的三个整数X,Y和Z的值
intmax3(intx,inty,intz)
if(x>
y)
if(x>
z)returnx;
elsereturnz;
else
if(y>
z)returny;
第二章线性表
一、选择题
1.线性表是具有n个__C___的有限序列(n>
0)。
A.表元素B.字符C.数据元素D.数据项
2.一个顺序表所占用的存储空间大小与___B___无关。
A.表的长度B.元素的存放顺序
C.元素的类型D.元素中各字段的类型
3.线性表的顺序存储结构是一种__A___。
A.随机存取的存储方式B.顺序存取的存储方式
C.索引存取的存储方式D.Hash存取的存储方式
4.若线性表采用顺序存储结构,每个元素占用4个存储单元,第一个元素的存储地址为100,则第12个元素的存储地址是__B____。
A.112B.144C.148D.412
5.线性表是__A____。
A.一个有限序列,可以为空B.一个有限序列,不能为空
C.一个无限序列,可以为空D.一个无限序列,不能为空
6.对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为__C____。
A.O(n)O(n)B.O(n)O
(1)C.O
(1)O(n)D.O
(1)O
(1)
7.若长度为n的非空线性表采用顺序存储结构,删除表的第i个数据元素,首先需要移动表中___A____中数据元素。
A.n-iB.n+iC.n-i+1D.n-i-1
8.对顺序存储的线性表,设其长度为n,在任何位置插入或删除操作都是等概率的。
删除一个元素时平均要移动表中的____C____个元素。
A.n/2B.(n+1)/2C.(n-1)/2D.n
9.若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为__C____。
(1≤i≤n+1)
A.O(0)B.O
(1)C.O(n)D.O(n2)
10.线性表中各链接点之间的地址___C____。
A.必须连续B.部分地址必须连续
C.不一定连续D.连续与否无所谓
11.在n个结点的线性表的数组表示中,算法的时间复杂度是O
(1)的操作是_A______。
A.访问第i个结点后插入一个新结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n)
B.在第i个结点后插入一个新结点(1≤i≤n)
C.删除第i个结点(1≤i≤n)
D.以上都不对
12.单链表中,增加一个头结点的目的是为了____C_____。
A.使单链表至少有一个结点B.标识表结点中首结点的位置
C.方便运算的实现D.说明单链表是线性表的链式存储
13.对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是_B____。
A.head==NULLB.head->
next==NULL
C.head->
next==headD.head!
=NULL
14.将长度为n的单链表链接在长度为m的单链表后面的算法的时间复杂度采用大O形式表示应该是___C____。
A.O
(1)B.O(n)C.O(m)D.O(n+m)
15.静态链表中指针表示的是___C____。
A.下一个元素的地址B.内存储器的地址
C.下一个元素在数组中的位置D.左链或右链指向的元素的地址
16.非空的循环单链表head的尾结点p满足__A______。
A.P->
link=headB.P->
link=NULLC.P=NULLD.P=head
17.某线性表用带头结点的循环单链表存储,头指针为head,当head->
next->
next==head成立时,线性表的长度是___B____。
A.0B.1C.2D.3
18.在什么情况下,应使用链式结构存储线性表L?
___B____
A.需经常修改L中的结点值B.需不断对L进行删除插入
C.需要经常查询L中的结点值D.L中结点结构复杂
19.与单链表相比较,双向链表的优点之一是___D_____。
A.可以省略头结点指针B.可以随机访问
C.插入、删除操作更简单D.顺序访问相邻结点更灵活
20.某线性表常发生的操作为删除第一个数据元素和最后一个元素后添加新元素,采用__D__作为存储结构,能使其存储效率和时间效率最高。
A.单链表B.仅用头指针的循环单链表
C.双向循环链表D.仅用尾指针的循环单链表
21.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。
则采用_D___存储方式最节省运算时间。
A.单链表B.双链表C.单循环链表D.带头结点的双循环链表
22.对于一个线性表既要求能够进行较快的插入和删除,又要求存储结构能够反映数据之间的逻辑关系,则应用___C____。
A.顺序方式存储B.散列方式存储C.链接方式存储D.以上方式均可
23.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用___A___存储方式最节省时间。
A.顺序表B.双链表C.带头结点的双循环链表D.单循环链表
24.若线性表最常用的操作是存取第i个元素及其前驱和后继元素的值,为节省时间应采用的存储方式为___D_____。
A.单链表B.双向链表C.单循环链表D.顺序表
25.下面哪一条是顺序存储结构的优点?
___C______
A.插入运算方便B.可方便地用于各种逻辑结构的存储表示
C.存储密度大D.删除运算方便
26.下面关于线性表的叙述中,错误的是___B_____。
A.线性表采用顺序存储,必须占用一批连续的存储单元
B.线性表采用顺序存储,便于进行插入和删除的操作
C.线性表采用链接存储,不必占用一片连续的存储单元
D.线性表采用链接存储,便于插入和删除操作
27.在非空线性链表中由p所指的链接点后面插入一个由q所指的链接点的过程是依次执行动作__B____。
A.q->
link=p;
p->
link=q;
B.q-link=p->
link;
C.q->
link=p->
p=q;
D.p->
q->
26.在非空双向循环链表中由q所指的链接点前面插入一个由p指的链接点的过程是依次执行语句p->
rlink=q;
llink=q->
llink;
llink=p;
____D____。
rlink->
B.q->
llink->
rlink=p;
C.p->
29.在非空双向循环链表中由q所指的链接点后面插入一个由p指的链接点的动作依次为__D____。
A.p->
llink=q;
p->
rlink=q->
rlink;
q->
rlink=p;
llink=p;
B.p->
rlink=p;
D.p->
30.在双向链表存储结构中,删除p所指的结点时须修改指针__A____。
rlink=p->
llink=p->
llink;
llink=p;
31.单链表的存储密度为__C____。
A.大于1B.等于5C.小于1D.不能确定
二.判断题
1.线性表的逻辑顺序与存储顺序总是一致的。
()
2.线性表的顺序存储结构比链式存储结构更好。
3.线性表中的所有元素都有一个前驱元素和后继元素。
4.不论线性表采用顺序存储结构还是链式存储结构,删除值为X的结点的时间复杂度均为O(n)。
5.线性的数据结构可以顺序存储,也可以链接存储。
非线性的数据结构只能链接存储。
6.非空线性表中任意一个数据元素都有且仅有一个直接后继元素。
()
7.用一组地址连续的存储单元存放的元素一定构成线性表。
8.线性表在顺序存储时,逻辑上相邻的元素未必在存储的物理位置次序上相邻。
9.顺序表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。
10.顺序表中所有结点的类型必须相同。
11.对链表进行插入和删除操作时不必移动链表中结点。
12.非空的双向循环链表中任何结点的前驱指针均不为空。
13.链式存储在插入和删除时需要保持物理存储空间的顺序分配,不需要保持数据元素之间的逻辑顺序。
()
14.单链表从任何一个结点出发,都能访问到所有结点。
15.符号p->
next出现在表达式中表示p所指的那个结点的内容。
16.带表头结点的双向循环链表判空的条件是:
first->
rlink==first(first为表头指针)。
三、综合应用题
1.利用顺序表的操作,实现以下函数:
1)从顺序表中删除具有最小值的元素并由函数返回被删除元素的值。
空出的位置由最后一个元素填补,若顺序表为空则显示出错信息并退出运行。
2)从顺序表中删除第i个元素并由函数返回被删除元素的值,如果i不合理或顺序表为空则显示出错信息并退出运行。
3)向顺序表中第i个位置插入一个新元素x。
如果i不合理则显示出错信息并退出运行
4)从顺序表中删除具有给定值x的所有元素。
5)从顺序表中删除其值在给定值s与t之间(要求s小于t)的所有元素。
如果s或t不合理或者顺序表为空,则显示错误信息并退出。
6)从有序顺序表中删除其值在给定值s与t之间(要求s小于t)的所有元素,如果s或t不合理或顺序表为空,则显示错误信息并退出。
7)将两个有序顺序表合并成一个新的有序顺序表并由函数返回结果顺序表
8)从有序顺序表中删除所有其值重复的元素,使表中所有元素的值均不相同。
2.请设计算法将不带头结点的单链表就地逆置。
3.有一个单链表L(至少有1个结点),其头结点指针为h