数据结构期末考试复习练习题.docx

上传人:b****6 文档编号:7577420 上传时间:2023-01-25 格式:DOCX 页数:19 大小:59.91KB
下载 相关 举报
数据结构期末考试复习练习题.docx_第1页
第1页 / 共19页
数据结构期末考试复习练习题.docx_第2页
第2页 / 共19页
数据结构期末考试复习练习题.docx_第3页
第3页 / 共19页
数据结构期末考试复习练习题.docx_第4页
第4页 / 共19页
数据结构期末考试复习练习题.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

数据结构期末考试复习练习题.docx

《数据结构期末考试复习练习题.docx》由会员分享,可在线阅读,更多相关《数据结构期末考试复习练习题.docx(19页珍藏版)》请在冰豆网上搜索。

数据结构期末考试复习练习题.docx

数据结构期末考试复习练习题

习题练习

第一章

1.算法的计算量的大小称为计算的()。

A.效率B.复杂性C.现实性D.难度

2.算法的时间复杂度取决于()

A.问题的规模B.待处理数据的初态C.A和B

3.计算机算法指的是

(1),它必须具备

(2)这三个特性。

(1)A.计算方法B.排序方法C.解决问题的步骤序列D.调度方法

(2)A.可执行性、可移植性、可扩充性B.可执行性、确定性、有穷性

C.确定性、有穷性、稳定性D.易读性、稳定性、安全性

4.一个算法应该是()。

A.程序B.问题求解步骤的描述C.要满足五个基本特性D.A和C.

5、下面属于逻辑结构的是()

A顺序表B哈希表C有序表D单链表

6、某算法的时间复杂度为O(n2),表明该算法的()

A问题规模是n2B执行时间等于n2

C执行时间与n2成正比D问题规模与n2成正比

7、下面关于算法说法错误的是()

A.算法最终必须由计算机程序实现

B.为解决某问题的算法同为该问题编写的程序含义是相同的

C.算法的可行性是指指令不能有二义性

D.以上几个都是错误的

8.从逻辑上可以把数据结构分为()两大类。

A.动态结构、静态结构B.顺序结构、链式结构

C.线性结构、非线性结构D.初等结构、构造型结构

9.以下与数据的存储结构无关的术语是()。

A.循环队列B.链表C.哈希表D.栈

10.以下数据结构中,哪一个是线性结构()?

A.广义表B.二叉树C.稀疏矩阵D.串

11.以下那一个术语与数据的存储结构无关?

()

A.栈B.哈希表C.线索树D.双向链表

12.在下面的程序段中,对x的赋值语句的频度为()

FORi:

=1TOnDO

FORj:

=1TOnDO

x:

=x+1;

A.O(2n)B.O(n)C.O(n2)D.O(log2n)

14.以下数据结构中,()是非线性数据结构

A.树B.字符串C.队D.栈

15.下列数据中,()是非线性数据结构。

A.栈B.队列C.完全二叉树D.堆

16.连续存储设计时,存储单元的地址()。

A.一定连续B.一定不连续C.不一定连续D.部分连续,部分不连续

17.以下属于逻辑结构的是()。

A.顺序表B.哈希表C.有序表D.单链表

二、问答:

1.数据结构是一门研究什么内容的学科?

2.数据元素之间的关系在计算机中有几种表示方法?

各有什么特点?

3.数据类型和抽象数据类型是如何定义的。

二者有何相同和不同之处,抽象数据类型的主要特点是什么?

使用抽象数据类型的主要好处是什么?

4.回答问题

(1)在数据结构课程中,数据的逻辑结构,数据的存储结构及数据的运算之间存在着怎样的关系?

(2)若逻辑结构相同但存储结构不同,则为不同的数据结构。

这样的说法对吗?

举例说明之。

(3)在给定的逻辑结构及其存储表示上可以定义不同的运算集合,从而得到不同的数据结构。

这样说法对吗?

举例说明之。

5.评价一个好的算法,您是从哪几方面来考虑的?

第二章

1.下述哪一条是顺序存储结构的优点?

()

A.存储密度大B.插入运算方便C.删除运算方便D.可方便地用于各种逻辑结构的存储表示

2.下面关于线性表的叙述中,错误的是哪一个?

()

A.线性表采用顺序存储,必须占用一片连续的存储单元。

B.线性表采用顺序存储,便于进行插入和删除操作。

C.线性表采用链接存储,不必占用一片连续的存储单元。

D.线性表采用链接存储,便于插入和删除操作。

3.线性表是具有n个()的有限序列(n>0)。

A.表元素B.字符C.数据元素D.数据项E.信息项

4.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用()存储方式最节省时间。

A.顺序表B.双链表C.带头结点的双循环链表D.单循环链表

5.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间。

A.单链表B.仅有头指针的单循环链表C.双链表D.仅有尾指针的单循环链表

6.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。

则采用()存储方式最节省运算时间。

A.单链表B.双链表C.单循环链表D.带头结点的双循环链表

7.若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为()(1<=i<=n+1)。

A.O(0)B.O

(1)C.O(n)D.O(n2)

8.对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为()。

A.O(n)O(n)B.O(n)O

(1)C.O

(1)O(n)D.O

(1)O

(1)

9.线性表(a1,a2,…,an)以链接方式存储时,访问第i位置元素的时间复杂性为()

A.O(i)B.O

(1)C.O(n)D.O(i-1)

16.非空的循环单链表head的尾结点p↑满足()。

A.p↑.link=headB.p↑.link=NILC.p=NILD.p=head

17.循环链表H的尾结点P的特点是()。

A.P^.NEXT:

=HB.P^.NEXT:

=H^.NEXTC.P:

=HD.P:

=H^.NEXT

18.在一个以h为头的单循环链中,p指针指向链尾的条件是()

A.p^.next=hB.p^.next=NILC.p^.next.^next=hD.p^.data=-1

19.在双向链表指针p的结点前插入一个指针q的结点操作是()。

A.p->Llink=q;q->Rlink=p;p->Llink->Rlink=q;q->Llink=q;

B.p->Llink=q;p->Llink->Rlink=q;q->Rlink=p;q->Llink=p->Llink;

C.q->Rlink=p;q->Llink=p->Llink;p->Llink->Rlink=q;p->Llink=q;

D.q->Llink=p->Llink;q->Rlink=q;p->Llink=q;p->Llink=q;

20.在单链表指针为p的结点之后插入指针为s的结点,正确的操作是:

()。

A.p->next=s;s->next=p->next;B.s->next=p->next;p->next=s;

C.p->next=s;p->next=s->next;D.p->next=s->next;p->next=s;

25.对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是()

A.head==NULLB.head→next==NULLC.head→next==headD.head!

=NULL

二、算法设计:

1.插入算法,在带有头结点的单链表La中第i个元素之前插入e。

2.删除算法,删除带有头结点的单链表La中第i个元素

3.将两个有序的带有头结点单链表La和Lb进行合并成一个有序的单链表Lc算法

4.将链表La进行逆置等操作。

5.已知非空线性链表由list指出,链结点的构造为(data,link).请写一算法,将链表中数据域值最小的那个链结点移到链表的最前面。

要求:

不得额外申请新的链结点。

6.(6)有一个单链表L(至少有1个结点),其头结点指针为head,编写一个过程将L逆置,即最后一个结点变成第一个结点,原来倒数第二个结点变成第二个结点,如此等等。

7.在一个递增有序的线性表中,有数值相同的元素存在。

若存储方式为单链表,设计算法去掉数值相同的元素,使表中不再有重复的元素。

例如:

(7,10,10,21,30,42,42,42,51,70)将变作(7,10,21,30,42,51,70),分析算法的时间复杂度。

第三章

1.对于栈操作数据的原则是()。

A.先进先出B.后进先出C.后进后出D.不分顺序

2.在作进栈运算时,应先判别栈是否(①),在作退栈运算时应先判别栈是否(②)。

当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为(③)。

为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的内存空间时,应将两栈的(④)分别设在这片内存空间的两端,这样,当(⑤)时,才产生上溢。

①,②:

A.空B.满C.上溢D.下溢

③:

A.n-1B.nC.n+1D.n/2

④:

A.长度B.深度C.栈顶D.栈底

⑤:

A.两个栈的栈顶同时到达栈空间的中心点.

B.其中一个栈的栈顶到达栈空间的中心点.

C.两个栈的栈顶在栈空间的某一位置相遇.

D.两个栈均不空,且一个栈的栈顶到达另一个栈的栈底.

3.一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1<=i<=n)个元素是()。

A.不确定B.n-i+1C.iD.n-i

4.若一个栈的输入序列为1,2,3,…,n,输出序列的第一个元素是i,则第j个输出元素是()。

A.i-j-1B.i-jC.j-i+1D.不确定的

5.若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pN,若pN是n,则pi是()。

A.iB.n-iC.n-i+1D.不确定

6.有六个元素6,5,4,3,2,1的顺序进栈,问下列哪一个不是合法的出栈序列?

()

A.543612B.453126C.346521D.234156

8.一个栈的输入序列为12345,则下列序列中不可能是栈的输出序列的是()。

A.23415B.54132C.23145D.15432

13.输入序列为ABC,可以变为CBA时,经过的栈操作为()【中山大学1999一、8(1分)】

A.push,pop,push,pop,push,popB.push,push,push,pop,pop,pop

C.push,push,pop,pop,push,popD.push,pop,push,push,pop,pop

14.若一个栈以向量V[1..n]存储,初始栈顶指针top为n+1,则下面x进栈的正确操作是()。

A.top:

=top+1;V[top]:

=xB.V[top]:

=x;top:

=top+1

C.top:

=top-1;V[top]:

=xD.V[top]:

=x;top:

=top-1

15.若栈采用顺序存储方式存储,现两栈共享空间V[1..m],top[i]代表第i个栈(i=1,2)栈顶,栈1的底在v[1],栈2的底在V[m],则栈满的条件是()。

A.|top[2]-top[1]|=0B.top[1]+1=top[2]C.top[1]+top[2]=mD.top[1]=top[2]

16.栈在()中应用。

【中山大学1998二、3(2分)】

A.递归调用B.子程序调用C.表达式求值D.A,B,C

17.一个递归算法必须包括()。

A.递归部分B.终止条件和递归部分C.迭代部分D.终止条件和迭代部分

19.表达式a*(b+c)-d的后缀表达式是()。

A.abcd*+-B.abc+*d-C.abc*+d-D.-+*abcd

21.设计一个判别表达式中左,右括号是否配对出现的算法,采用()数据结构最佳。

A.线性表的顺序存储结构B.队列C.线性表的链式存储结构D.栈

22.用链接方式存储的队列,在进行删除运算时()。

A.仅修改头指针B.仅修改尾指针C.头、尾指针都要修改D.头、尾指针可能都要修改

23.用不带头结点的单链表存储队列时,其队头指针指向队头结点,其队尾指针指向队尾结点,则在进行删除操作时()。

A.仅修改队头指针B.仅修改队尾指针

C.队头、队尾指针都要修改D.队头,队尾指针都可能要修改

24.递归过程或函数调用时,处理参数及返回地址,要用一种称为()的数据结构。

A.队列B.多维数组C.栈D.线性表

25.假设以数组A[m]存放循环队列的元素,其头尾指针分别为front和rear,则当前队列中的元素个数为()。

A.(rear-front+m)%mB.rear-front+1C.(front-rear+m)%mD.(rear-front)%m

26.循环队列A[0..m-1]存放其元素值,用front和rear分别表示队头和队尾,则当前队列中的元素数是()。

A.(rear-front+m)%mB.rear-front+1C.rear-front-1D.rear-front

27.循环队列存储在数组A[0..m]中,则入队时的操作为()。

A.rear=rear+1B.rear=(rear+1)mod(m-1)

C.rear=(rear+1)modmD.rear=(rear+1)mod(m+1)

28.若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为多少?

()

A.1和5B.2和4C.4和2D.5和1

31.最大容量为n的循环队列,队尾指针是rear,队头是front,则队空的条件是()。

A.(rear+1)MODn=frontB.rear=front

C.rear+1=frontD.(rear-l)MODn=front

32.栈和队列的共同点是()。

A.都是先进先出B.都是先进后出

C.只允许在端点处插入和删除元素D.没有共同点

34.栈和队都是()

A.顺序存储的线性结构B.链式存储的非线性结构

C.限制存取点的线性结构D.限制存取点的非线性结构

35.设栈S和队列Q的初始状态为空,元素a1,a2,a3,a4,a5和a6依次通过栈S,一个元素出栈后即进队列Q,若6个元素出队的序列是a2,a4,a3,a6,a5,a1则栈S的容量至少应该是()。

A.6B.4C.3D.2

36.用单链表表示的链式队列的队头在链表的()位置。

A.链头B.链尾C.链中

第四章串

1.下面关于串的的叙述中,哪一个是不正确的?

()

A.串是字符的有限序列B.空串是由空格构成的串

C.模式匹配是串的一种重要运算D.串既可以采用顺序存储,也可以采用链式存储

2.串的长度是指()

A.串中所含不同字母的个数B.串中所含字符的个数

C.串中所含不同字符的个数D.串中所含非空格字符的个数

3.空格串是指__

(1)__,其长度等于___

(2)__。

4.组成串的数据元素只能是________。

5.一个字符串中________称为该串的子串。

第5章数组和广义表

1、设有数组A[i,j],数组的每个元素长度为3字节,i的值为1到8,j的值为1到10,数组从内存首地址BA开始顺序存放,当用以列为主存放时,元素A[5,8]的存储首地址为()。

A.BA+141B.BA+180C.BA+222D.BA+225

2.假设以行序为主序存储二维数组A=array[1..100,1..100],设每个数据元素占2个存储单元,基地址为10,则LOC[5,5]=()。

A.808B.818C.1010D.1020

3.数组A[0..5,0..6]的每个元素占五个字节,将其按列优先次序存储在起始地址为1000的内存单元中,则元素A[5,5]的地址是()。

A.1175B.1180C.1205D.1210

4、二维数组A的每个元素是由6个字符组成的串,其行下标i=0,1,…,8,列下标j=1,2,…,10。

若A按行先存储,元素A[8,5]的起始地址与当A按列先存储时的元素()的起始地址相同。

设每个字符占一个字节。

A.A[8,5]B.A[3,10]C.A[5,8]D.A[0,9]

5、.若对n阶对称矩阵A以行序为主序方式将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[1..(n(n+1))/2]中,则在B中确定aij(i

A.i*(i-1)/2+jB.j*(j-1)/2+iC.i*(i+1)/2+jD.j*(j+1)/2+i

6.数组A[0..4,-1..-3,5..7]中含有元素的个数()。

【中山大学1998二、5(2分)】

A.55B.45C.36D.16

1.数组的存储结构采用_______存储方式。

2.设二维数组A[-20..30,-30..20],每个元素占有4个存储单元,存储起始地址为200.如按行优先顺序存储,则元素A[25,18]的存储地址为__

(1)_;如按列优先顺序存储,则元素A[-18,-25]的存储地址为__

(2)_。

3.设数组a[1..50,1..80]的基地址为2000,每个元素占2个存储单元,若以行序为主序顺序存储,则元素a[45,68]的存储地址为_

(1)_;若以列序为主序顺序存储,则元素a[45,68]的存储地址为_

(2)_。

4.将整型数组A[1..8,1..8]按行优先次序存储在起始地址为1000的连续的内存单元中,则元素A[7,3]的地址是:

_______。

5.二维数组a[4][5][6](下标从0开始计,a有4*5*6个元素),每个元素的长度是2,则a[2][3][4]的地址是____。

(设a[0][0][0]的地址是1000,数据以行为主方式存储)

6.设有二维数组A[0..9,0..19],其每个元素占两个字节,第一个元素的存储地址为100,若按列优先顺序存储,则元素A[6,6]存储地址为_______。

第六章树和二叉树

1.已知一算术表达式的中缀形式为A+B*C-D/E,后缀形式为ABC*+DE/-,其前缀形式为()

A.-A+B*C/DEB.-A+B*CD/EC.-+*ABC/DED.-+A*BC/DE

2.设树T的度为4,其中度为1,2,3和4的结点个数分别为4,2,1,1则T中的叶子数为()

A.5B.6C.7D.8

3.在下述结论中,正确的是()

①只有一个结点的二叉树的度为0;②二叉树的度为2;③二叉树的左右子树可任意交换;

④深度为K的完全二叉树的结点个数小于或等于深度相同的满二叉树。

A.①②③B.②③④C.②④D.①④

4.设森林F对应的二叉树为B,它有m个结点,B的根为p,p的右子树结点个数为n,森林F中第一棵树的结点个数是()

A.m-nB.m-n-1C.n+1D.条件不足,无法确定

8.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是()

A.9B.11C.15D.不确定

9.在一棵三元树中度为3的结点数为2个,度为2的结点数为1个,度为1的结点数为2个,则度为0的结点数为()个

A.4B.5C.6D.7

10.设森林F中有三棵树,第一,第二,第三棵树的结点个数分别为M1,M2和M3。

与森林F对应的二叉树根结点的右子树上的结点个数是()。

A.M1B.M1+M2C.M3D.M2+M3

11.具有10个叶结点的二叉树中有()个度为2的结点,

A.8B.9C.10D.ll

12.一棵完全二叉树上有1001个结点,其中叶子结点的个数是()

A.250B.500C.254D.505E.以上答案都不对

13.设给定权值总数有n个,其哈夫曼树的结点总数为()

A.不确定B.2nC.2n+1D.2n-1

16.有关二叉树下列说法正确的是()

A.二叉树的度为2B.一棵二叉树的度可以小于2

C.二叉树中至少有一个结点的度为2D.二叉树中任何一个结点的度都为2

17.二叉树的第I层上最多含有结点数为()

A.2IB.2I-1-1C.2I-1D.2I-1

18.一个具有1025个结点的二叉树的高h为()

A.11B.10C.11至1025之间D.10至1024之间

19.一棵二叉树高度为h,所有结点的度或为0,或为2,则这棵二叉树最少有()结点

A.2hB.2h-1C.2h+1D.h+1

20、对于有n个结点的二叉树,其高度为()

A.nlog2nB.log2nC.log2n|+1D.不确定

21对二叉树的结点从1开始进行连续编号,要求每个结点的编号大于其左、右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,可采用()次序的遍历实现编号。

A.先序B.中序C.后序D.从根开始按层次遍历

22.树的后根遍历序列等同于该树对应的二叉树的().

A.先序序列B.中序序列C.后序序列

23.已知一棵二叉树的前序遍历结果为ABCDEF,中序遍历结果为CBAEDF,则后序遍历的结果为()。

A.CBEFDAB.FEDCBAC.CBEDFAD.不定

24.线索二叉树是一种()结构。

A.逻辑B.逻辑和存储C.物理D.线性

25.n个结点的线索二叉树上含有的线索数为()

A.2nB.n-lC.n+lD.n

26.一棵非空的二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉树一定满足()

【南开大学2000一、2】

A.所有的结点均无左孩子B.所有的结点均无右孩子C.只有一个叶子结点D.是任意一棵二叉树

27.下述编码中哪一个不是前缀码()。

A.(00,01,10,11)B.(0,1,00,11)C.(0,10,110,111)D.(1,01,000,001)

28.下面几个符号串编码集合中,不是前缀编码的是()。

A.{0,10,110,1111}B.{11,10,001,101,0001}C.{00,010,0110,1000}

二、应用题

1、将下列由三棵树组成的森林转换为二叉树。

(只要求给出转换结果)

 

2、已知二叉树的先序序列:

CBHEGAF,中序序列:

HBGEACF,试构造该二叉树

3、已知一个森林的先序序列和后序序列如下,请构造出该森林。

先序序列:

ABCDEFGHIJKLMNO

后序序列:

CDEBFHIJGAMLONK

4、、定一组数列(15,8,10,21,6,19,3)分别代表字符A,B,C,D,E,F,G出现的频度,试叙述建立哈夫曼树的算法思想,画出哈夫曼树,给出各字符的编码值,并说明这种编码的优点。

三、算法设计题:

1.二叉树的创建

2.求叶子个数

3.求总的结点个数

4.求树的深度

5.对树进行层次遍历

6.进行查询特

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1