数据结构练习题Word文档格式.docx
- 文档编号:21467949
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:55
- 大小:212.67KB
数据结构练习题Word文档格式.docx
《数据结构练习题Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构练习题Word文档格式.docx(55页珍藏版)》请在冰豆网上搜索。
数据元素(dataelement)——构成数据的基本单位(具有完整的独立意义)。
描述在某些场合还被称为元素、记录、结点、顶点等。
数据项(字段)——元素的具体信息
数据结构(datastructure)——构成数据元素之间的结构关系。
线性结构
树形结构(树型结构)
图结构(网状结构)
集合
逻辑结构——线性、树形(树型)、图(网状)、集合
存储结构——数据结构在内存中的实现形式同样的逻辑结构≠同样的存储结构
运算(判断存储结构的好坏)
有关数据结构几个方面的联系图
逻辑结构运算定义
抽象算法性能
数据
类型存储结构运算实现(算法)算法分析
(ADT)
3.设有数组A[i,j],数组的每个元素长度为3字节,i的值为1到8,j的值为1到10,数组从内存首地址BA开始顺序存放,当用以列为主存放时,元素A[5,8]的存储首地
址为()
A.BA+141 B.BA+180 C.BA+222 D.BA+225
BA+((8-1)*8+5-1)*3=B
4.数据
描述客观事物的数字、字符以及所有能输入到计算机中,并能被计算机接受的各种符号集合。
5.递归
若一个对象部分地包含它自己,或用它自己定义自己,则成这个对象是递归的;
若一个函数直接或间接地调用自己,则成这个函数是递归函数。
6.数据元素
表示一个事物的一组数据,是数据的基本单位。
7.数据结构是一门研究什么内容的学科?
数据结构是一门研究在非数值计算的程序设计问题中,计算机的操作对象,及对象间的关系,和施加于对象的操作等的学科。
8.简述评价一个好的算法需要考虑的因素。
主要有四个方面。
一是算法的正确性;
二是算法的易读性;
三是算法的健壮性;
四是算法的时空效率(运行)。
9.已知如下程序段,试计算语句1、2的频度及整个程序段的时间复杂性。
for(i=1;
i<
n;
i++)
{
x+=1;
语句1
for(j=1;
j<
j++)
y+=1;
语句2
}
因为,语句1位于第一层循环语句内,其频度为n;
语句2位于第二层循环内,其频度为n*n;
由此可见,当n趋于无穷时,整个程序的时间复杂性由语句2的频度决定,语句2为基本操作;
所以,程序的时间复杂性为O(n2)。
补充:
理解语句频度和复杂度的例子:
例子:
求解以下程序段的时间复杂度:
for(i=1;
i<
=n;
i++)x=x+1;
i++
语句执行次数:
1次
n+1次
n次
n次
共:
3n+2次
数量级为:
limf(n)/g(n)=lim(3n+2)/n=3,则时间复杂度为为O(n)
练习:
(1)for(i=1;
n;
i++)
for(j=1;
j<
=i;
j++)x++;
----O(n2)
(2)i=1;
while(i<
n)i=i*2;
----O(log2n)
10.解答问题。
设有数据逻辑结构为:
B=(K,R),K={k1,k2,…,k9}
R={<
k1,k3>
<
k1,k8>
k2,k3>
<
k2,k4>
k2,k5>
k3,k9>
k5,k6>
k8,k9>
k9,k7>
k4,k7>
k4,k6>
(1).画出这个逻辑结构的图示。
(2).相对于关系r,指出所有的开始接点和终端结点。
,开始结点:
(入度为0)K1,K2,终端结点(出度为0)K6,K7。
11.下面关于算法说法错误的是()
A.算法最终必须由计算机程序实现
B.为解决某问题的算法同为该问题编写的程序含义是相同的
C.算法的可行性是指指令不能有二义性
D.以上几个都是错误的
答案D
算法算法——特定问题的求解方法,指令的有限序列满足5个特征
●有穷:
必须在执行有穷步骤后结束
●确定(无二义性):
每一步骤是确切定义的,相同的输入只能有相同的输出
●输入>
=0个
●输出>
=1个
●可行性:
能够精确执行的基本操作
12.以下与数据的存储结构无关的术语是()
A.循环队列B.链表C.哈希表D.栈
D存储结构指物理结构:
顺序结构和链式结构。
栈是限制了插入删除点的线性表,只是逻辑结构而无关存储结构A指的是在顺序表上存储的队列
B就是链接存储C就是散列存储
13.抽象数据类型
指逻辑概念上的数据类型和这个类型上的操作集合。
14.算法的时间复杂度
算法的执行时间等于所有语句执行时间的总和,是算法所处理的数据元素个数n的函数表示为O(f(n))。
15.数据元素之间的关系在计算机中有几种表示方法?
各有什么特点?
两种表示方法
(1)顺序存储方式。
数据元素顺序存放,每个存储结点只含一个元素。
存储位置反映数据元素间的逻辑关系。
存储密度大,但有些操作(如插入、删除)效率较差。
(2)链式存储方式。
每个存储结点除包含数据元素信息外还包含一组(至少一个)指针。
指针反映数据元素间的逻辑关系。
这种方式不要求存储空间连续,便于动态操作(如插入、删除等),但存储空间开销大(用于指针),另外不能折半查找等。
实际上,有4种表示方法,本教材没讲全,若考到此题,只写前两种即可。
四种表示方法
(3)索引存储方式。
除数据元素存储在一地址连续的内存空间外,尚需建立一个索引表,索引表中索引指示存储结点的存储位置(下标)或存储区间端点(下标),兼有静态和动态特性。
(4)散列存储方式。
通过散列函数和解决冲突的方法,将关键字散列在连续的有限的地址空间内,并将散列函数的值解释成关键字所在元素的存储地址,这种存储方式称为散列存储。
其特点是存取速度快,只能按关键字随机存取,不能顺序存取,也不能折半存取。
16.在给定的逻辑结构及其存储表示上可以定义不同的运算集合,从而得到不同的数据结构。
这样说法对吗?
举例说明之。
正确。
栈和队列的逻辑结构相同,其存储表示也可相同(顺序存储和链式存储),但由于其运算集合不同而成为不同的数据结构。
17.试给出下面两个算法的运算时间。
(1)for(i=0;
i++)x+=1;
(2)for(i=0;
for(j=0;
y+=1;
(1)程序只有一层循环,x+=1即为基本操作,时间复杂度为O(n);
(2)程序有两层循环,y+=1为基本操作,时间复杂度为O(n2)。
18.以下数据结构中,哪一个是线性结构?
A.广义表 B.二叉树 C.稀疏矩阵 D.串
线性结构是一个数据元素的有序(次序)集合。
答案D,特别注意C不是线性结构,因为没满足线性结构的几个条件。
19.下列数据处理中不可分割的最小单位是()
A.数据元素B.数据类型C.数据项D.数据记录
【此教材上概念有点乱,大家看下面的整理】
C
本题主要考察数据结构的一些基本概念,相关概念:
数据:
描述客观事物能被计算机识别的各种符号集合;
数据元素:
表示一个事物的一组数据,是数据的基本单位;
数据类型:
一组“值”的集合,和定义在这个值集之上的一组操作。
数据项:
构成数据元素的数据,是数据元素不可分割的最小单位;
数据记录:
抽象数据类型:
基于一类逻辑关系的数据类型,及定义在该类型之上的一组操作。
数据结构:
数据元素的集合,其元素之间存在一种或多种关系。
由数据元素和其上的关系两部分组成。
指逻辑概念上的类型和这个类型上操作集合;
数据逻辑结构:
数据之间逻辑关系的描述;
数据物理结构:
在计算机中的存储方式(存储结构);
算法:
确定某种特定问题的操作序列的有穷规则集合;
算法5个特性:
有穷性,确定性,输入,输出,可行性
算法时间复杂度:
算法所处理的数据元素个数n的函数,表示O(f(n));
20.算法
一个有穷规则的集合,其规则确定了一个解决特定类型问题的操作序列。
【算法的特征:
有穷性,确定性,输入,输出,可行性,注意和算法目标的差别】
21.简述算法的规则必须满足的特性(即算法的目标)
正确性,应确切满足具体问题的需要;
可读性,有利于人们对算法的理解;
健壮性,具有一定的容错能力;
高时间效率,算法执行的时间短;
搞空间效率,算法占用的额外内存少。
22.设n是偶数,试计算运行下列程序段后m的值并给出该程序段的时间复杂度。
m=0;
=n;
for(j=2*i;
j++)
m+=1;
设内层循环次数为k,当k=n时内层循环终止,则内层循环的次数为n-2i+1,,外层循环次数为n/2次,所以,m的值为
,时间复杂度为O(n2)。
23.下列数据中,非线性数据结构是()
A.栈 B.队列 C.广义表 D.顺序表
24.下面说法错误的是()
A.在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法
B.所谓最坏时间复杂度是指最坏情况下,估算算法执行时间的一个上界
C.同一个算法,实现语言的级别越高,执行效率就越低
D.计算机的性能与算法的时间复杂度无关
C选项过于绝对,通常这种情况下是正确的;
25.简述算法设计的目标。
26.试计算下段程序的时间复杂度
i=1;
while(i<
=n)i=i+2;
程序的基本操作为i=i+2,设执行次数为k,则当程序终止时,i=1+3+5+…+(2k+1),所以程序的时间复杂度为O(n)。
27.连续存储设计时,存储单元的地址()
A.一定连续 B.一定不连续
C.不一定连续D.部分连续,部分不连续
A顺序结构存储的特征
29.以下不属于算法的特性的是()
A.有穷性B.可读性C.输入D.输出
B(记住算法5个特征,注意和目标相区别)
29.在数据结构课程中,数据的逻辑结构,数据的存储结构及数据的运算之间存在着怎样
的关系?
●数据的逻辑结构反映数据元素之间的逻辑关系;
●数据的存储结构是数据结构在计算机中的表示,包括数据元素的表示及其关系的表示,数据的运算是对数据定义的一组操作;
●运算是定义在逻辑结构上的,和存储结构无关;
●运算的实现则是依赖于存储结构。
30.已知如下程序段,试计算语句1、2的频度及整个程序段的时间复杂性。
●语句1位于第一层循环语句内,其频度为n;
●语句2位于第二层循环内,其频度为n*n;
●所以,程序的时间复杂性为O(n2)。
31.以下算法的时间复杂度最大的是()
A.O(n) B.O(nlogn) C.O(n3) D.2n
n为算法的规模,自然大于1,最好记住常见算法复杂度关系,否则,可用特殊值代入法确定。
比如设定n=2,确定其值间的关系,答案D。
记住:
32.下列算法与程序的描述正确的是()
A.算法与程序的执行都是有穷的
B.算法是用抽象语言描述的,程序是计算机能理解的指令序列
C.同一种算法只能用一个程序实现
D.以上均不正确
B算法是特定问题的求解方法,是指令的有限序列;
算法用抽象语言描述,可用不同的编程语言实现。
程序的执行可能无穷,比如操作系统;
同一算法可用多种程序来实现。
33.若逻辑结构相同但存储结构不同,则为不同的数据结构。
这样的说法对吗?
逻辑结构相同但存储不同,可以是不同的数据结构。
如,线性表的逻辑结构属于线性结构,采用顺序存储结构为顺序表,而采用链式存储结构称为线性链表。
34.数据元素之间的关系在计算机中有几种表示方法?
35.在下面的程序段中,对x的赋值语句的频度为()
for(i=1;
for(j=1;
x+=1;
A.O(2n) B.O(n) C.O(n2) D.O(log2n)
C外层共试探n次,执行是n-1次;
内层共试探n次,执行是n-1次,实现上x赋值语句共执行次数为(n-1)2次;
o(f(n))为时间复杂度,自然是O(n2)。
36.对每一种数据结构,都需要从下列哪个方面讨论?
A.逻辑结构 B.操作C.存储结构D.A、B和C
D数据结构就是讨论逻辑结构和物理结构,逻辑结构包括数据及其上的运算。
37.下列不属于抽象数据类型的组成部分是()
A.数据元素 B.数据元素的关系 C.对数据元素的操作D.数据的值
答案D,考察ADT,数据元素和及其上的运算。
第二章线性表
1.什么是顺序存储结构的优点?
A.存储密度大 B.插入运算方便
C.可方便地用于各种逻辑结构的存储表示D.删除运算方便
2.下面关于线性表的叙述中,错误的是()
A.线性表采用顺序存储,必须占用一片连续的存储单元
B.线性表采用顺序存储,便于进行插入和删除操作
C.线性表采用链接存储,不必占用一片连续的存储单元
D.线性表采用链接存储,便于插入和删除操作
3.如果有n个线性表同时并存,并且在处理过程中各表的长度会动态变化,线性表的总数也会自动地改变。
在此情况下,应选用哪种存储结构?
为什么?
4.已给如下关于单链表的类型说明:
classNode
intdata;
Node*next;
以下程序采用链表合并的方法,将两个已排序的单链表合并成一个链表而不改变其排序性(升序),这里两链表的头指针分别为listA和listB,将程序补充完整。
Node*head,rear;
___
(1)___;
head->
next=NULL;
rear=head;
while(listA!
=NULL&
&
listB!
=NULL)
if(listA->
data<
=listB->
data)
{
___
(2)___;
rear=listA;
listA=listA->
next;
else
___(3)___;
rear=listB;
listB=listB->
if(ListA==NULL)rear->
next=listB;
___(4)___;
ListA=head->
___(5)___;
5.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则
利用下列哪种存储方式最节省时间?
A.顺序表 B.双链表 C.带头结点的双循环链表
D.单循环链表
6.线性表是具有n个什么的有限序列(n>
0)?
A.表元素 B.字符 C.数据元素 D.数据项
7.若线性表的总数基本稳定,且很少进行插入和删除,但要求以最快的速度存取线性表中的元素,那么应采用哪种存储结构?
为什么?
8.线性表的顺序存储结构具有三个弱点:
其一,在作插入或删除操作时,需移动大量元素;
其二,由于难以估计,必须预先分配较大的空间,往往使存储空间不能得到充分利用;
其三,表的容量难以扩充。
线性表的链式存储结构是否都能够克服上述三个弱点?
9.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采
用下列哪种存储方式最节省运算时间?
A.单链表 B.仅有头指针的单循环链表 C.双链表
D.仅有尾指针的单循环链表
10.下面的叙述正确的是()
A.线性表在链式存储时,查找第i个元素的时间同i的值成反比
B.线性表在链式存储时,查找第i个元素的时间同i的值无关
C.线性表在顺序存储时,查找第i个元素的时间同i的值成正比
D.线性表在顺序存储时,查找第i个元素的时间同i的值无关
11.循环队列存储在数组A[0..m]中,则入队时的操作为()
A.rear=rear+1 B.rear=(rear+1)%(m-1)
C.rear=(rear+1)%m D.rear=(rear+1)%(m+1)
12.设一个链表最常用的操作是在末尾插入结点和删除尾结点,则最节省时间的链表是()
A.单链表 B.单循环链表
C.带尾指针的单循环链表 D.带头结点的双循环链表
13.若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间
复杂度为多少(1<
=i<
=n+1)?
A.O(0) B.O
(1) C.O(n) D.O(n2)
14.若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当
从队列中删除一个元素,再加入两个元素后,rear和front的值分别为()
A.1和5 B.2和4 C.4和2 D.5和1
15.线性表
16.若较频繁地对一个线性表进行插入和删除操作,该线性表宜采用何种存储结构?
7.简要叙述循环队列的数据结构,并写出其初始状态、队列空、队列满时的队首指针与队尾指针的值。
18.用链表表示的数据的简单选择排序,结点的域为数据域data,指针域next;
链表首指针为head,链表无头结点,阅读下面的程序并补充完整。
selectsort(head)
p=head;
while(p!
=NULL)
q=p;
r=___
(1)____
while(___
(2)____)
if(___(3)____)q=r;
r=___(4)____;
tmp=q->
data;
q->
data=p->
p->
data=tmp;
p=___(5)____;
19.链表不具有的特点是()
A.插入、删除不需要移动元素 B.可随机访问任一元素
C.不必事先估计存储空间 D.所需空间与线性长度成正比
20.对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为()
A.O(n)O(n) B.O(n)O
(1) C.O
(1)O(n) D.O
(1)O
(1)
21.最大容量为n的循环队列,队尾指针是rear,队头是front,则队空的条件是()
A.(rear+1)%n=front B.rear=front
C.rear+1=front D.(rear-l)%n=front
22.对线性表进行二分查找时,要求线性表必须()
A.以顺序方式存储 B.以顺序方式存储,且数据元素有序
C.以链接方式存储 D.以链接方式存储,且数据元素有序
23.说明在线性表的链式存储结构中,头指针与头结点之间的根本区别;
头结点与起始结点的关系。
24.给出循环队列中元素个数的计算式(设队最大长度为N,队首指针FRONT,队尾指针REAR)
25.如果有n个线性表同时并存,并且在处理过程中各表的长度会动态变化,线性表的总数也会自动地改变。
26.
27.
28.线性表(a1,a2,…,an)以链接方式存储时,访问第i位置元素的时间复杂性为()
A.O(i) B.O
(1) C.O(n) D.O(i-1)
29.根据需要,用适当的语句填入下面算法的_______中:
问题:
设有n件物品,重量分别为w1,w2,w3,…,wn和一个能装载总重量为T的背包。
能否从n件物品中选择若干件恰好使它们的重量之和等于T。
若能,则背包问题有解,否则无解。
{w[1:
n]存放n件物品的重量,依次从中取出物品放入背包中,检查背包重量,若不超过T,则装入,否则弃之,取下一个物品试之。
若有解则返回函数值true,否则返回false}
解此问题的算法如下:
intstack[size],top,w[n];
boolflag;
top=0;
i=1;
//i指示待选物品
while(__
(1)__&
__
(2)__)
if(__(3)__||__(4)__&
n)top=__(5)__;
stack[top]=i;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 练习题