数据结构习题.docx
《数据结构习题.docx》由会员分享,可在线阅读,更多相关《数据结构习题.docx(17页珍藏版)》请在冰豆网上搜索。
数据结构习题
数据结构习题
第二章线性表
1.若有100个学生,每个学生有学号,姓名,平均成绩,采用什么样的数据结构最方便,写出这些结构?
2.线性表有两种存储结构:
一是顺序表,二是链表。
试问:
(1)如果有n个线性表同时并存,并且在处理过程中各表的长度会动态变化,线性表的总数也会自动地改变。
在此情况下,应选用哪种存储结构?
为什么?
(2)若线性表的总数基本稳定,且很少进行插入和删除,但要求以最快的速度存取线性表中的元素,那么应采用哪种存储结构?
为什么?
3.若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为()(1<=i<=n+1)。
A.O(0)B.O
(1)C.O(n)D.O(n2)
4.顺序存储方式插入和删除时效率太低,因此它不如链式存储方式好。
()
5.线性表的特点是每个元素都有一个前驱和一个后继。
()
6.链表是采用链式存储结构的线性表,进行插入、删除操作时,在链表中比在顺序存储结构中效率高。
()
7.在顺序表中,逻辑上相邻的元素,其物理位置 相邻。
在单链表中,逻辑上相邻的元素,其物理位置 相邻。
8.已知L是无表头结点的单链表,且P结点既不是首元素结点,也不是尾元素结点。
按要求从下列语句中选择合适的语句序列。
a.在P结点后插入S结点的语句序列是:
。
b.在P结点前插入S结点的语句序列是:
。
c.在表首插入S结点的语句序列是:
。
d.在表尾插入S结点的语句序列是:
。
供选择的语句有:
(1)P->next=S;
(2)P->next=P->next->next;(3)P->next=S->next;(4)S->next=P->next;(5)S->next=L;(6)S->next=NULL;(7)Q=P;(8)while(P->next!
=Q)P=P->next;(9)while(P->next!
=NULL)P=P->next;(10)P=Q;(11)P=L;(12)L=S;(13)L=P;
第三章:
1.有5个元素,其入栈次序为:
A,B,C,D,E,在各种可能的出栈次序中,以元素C,D最先出栈(即C第一个且D第二个出栈)的次序有哪几个?
2.栈S和队列Q的初始状态皆为空,元素a1,a2,a3,a4,a5和a6依次通过S栈,一个元素出栈后即进入队列Q,若6个元素出队列的顺序是a3,a5,a6,a4,a2,a1,则栈S至少应该容纳个元素。
3.在作进栈运算时,应先判别栈是否(①),在作退栈运算时应先判别栈是否(②)。
当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为(③)。
为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的内存空间时,应将两栈的(④)分别设在这片内存空间的两端,这样,当⑤)时,才产生上溢。
①,②:
A.空B.满C.上溢D.下溢
③:
A.n-1B.nC.n+1D.n/2
④:
A.长度B.深度C.栈顶D.栈底
⑤:
A.两个栈的栈顶同时到达栈空间的中心点.
B.其中一个栈的栈顶到达栈空间的中心点.
C.两个栈的栈顶在栈空间的某一位置相遇.
D.两个栈均不空,且一个栈的栈顶到达另一个栈的栈底.
4.若用一个大小为8的数组来实现循环队列,且当前rear和front的值分别为0和5,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为多少?
()
5.循环队列引入原因,循环队列如何判断队空队满
6.循环队列也存在空间溢出问题。
7.栈的特点是(①),队列的特点是(②),栈和队列都是(③)。
若进栈序列为1,2,3,4则(④)不可能是一个出栈序列(不一定全部进栈后再出栈);若进队列的序列为1,2,3,4则(⑤)是一个出队列序列。
①,②:
A.先进先出B.后进先出C.进优于出D.出优于进
③:
A.顺序存储的线性结构B.链式存储的线性结构
C.限制存取点的线性结构D.限制存取点的非线性结构
④,⑤:
A.3,2,1,4B.3,2,4,1C.4,2,3,1D.4,3,2,1F.1,2,3,4G.1,3,2,4
第四章:
选择
下面关于串的的叙述中,哪一个是不正确的?
()
A.串是字符的有限序列B.空串是由空格构成的串
C.模式匹配是串的一种重要运算D.串既可以采用顺序存储,也可以采用链式存储
设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为()
A.求子串B.联接C.匹配D.求串长
模式串t=‘abcaabbcabcaabdab’,该模式串的next数组的值为(),nextval数组的值为()。
A.01112211123456712B.01112121123456112
C.01110013101100701D.01112231123456712
E.01100111011001701F.01102131011021701
若串S=’software’,其子串的数目是()。
A.8B.37C.36D.9
串的长度是指()
A.串中所含不同字母的个数B.串中所含字符的个数
C.串中所含不同字符的个数D.串中所含非空格字符的个数
判断
KMP算法的特点是在模式匹配时指示主串的指针不会变小。
()
串是一种数据对象和操作都特殊的线性表。
()
设模式串的长度为m,目标串的长度为n,当n≈m且处理只匹配一次的模式时,朴素的匹配(即子串定位函数或简单匹配)算法所花的时间代价可能会更为节省。
()
填空
INDEX(‘DATASTRUCTURE’,‘STR’)=________
设T和P是两个给定的串,在T中寻找等于P的子串的过程称为__
(1)__,又称P为__
(2)__。
两个字符串相等的充分必要条件是_______
第五章数组
1.设数组a[1..50,1..80]的基地址为2000,每个元素占2个存储单元,若以行序为主序顺序存储,则元素a[45,68]的存储地址是多少;若以列序为主序顺序存储,则元素a[45,68]的存储地址是多少。
2.二维数组A的元素都是6个字符组成的串,行下标i的范围从0到8,列下标j的范圈从1到10。
从供选择的答案中选出应填入下列关于数组存储叙述中()内的正确答案。
(1)存放A至少需要()个字节;
(2)A的第8列和第5行共占()个字节;
(3)若A按行存放,元素A[8,5]的起始地址与A按列存放时的元素()的起始地址一致。
供选择的答案:
(1)A.90B.180C.240D.270E.540
(2)A.108B.114C.54D.60E.150
(3)A.A[8,5]B.A[3,10]C.A[5,8]D.A[0,9]
3.数组A[0..4,-1..-3,5..7]中含有元素的个数()。
A.55B.45C.36D.16
4.对稀疏矩阵进行压缩存储目的是()。
A.便于进行矩阵运算B.便于输入和输出
C.节省存储空间D.降低运算的时间复杂度
5.稀疏矩阵压缩存储后,必会失去随机存取功能。
()
6.数组可看成线性结构的一种推广,因此与线性表一样,可以对它进行插入,删除等操作。
()
7.一个稀疏矩阵Am*n采用三元组形式表示,若把三元组中有关行下标与列下标的值互换,并把m和n的值互换,则就完成了Am*n的转置运算。
()
8.数组的存储结构采用_______存储方式。
9.设A是n*n的对称矩阵,将A的对角线及对角线上方的元素以列为主的次序存放在一维数组B[1..n(n+1)/2]中,求上述任一元素aij(1≤i,j≤n,且i≤j)在B中的位置
10.设矩阵A=
(1)若将A视为对称矩阵,画出对其压缩存储的存储表,并讨论如何存取A中元素aij(0<=i,j<4);
(2)若将A视为稀疏矩阵,画出其三元组表形式压缩存储表。
第六章:
选择
1、若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是()
A.9B.11C.15D.不确定
2、设森林F中有三棵树,第一,第二,第三棵树的结点个数分别为M1,M2和M3。
与森林F对应的二叉树根结点的右子树上的结点个数是()。
A.M1B.M1+M2C.M3D.M2+M3
3、一棵完全二叉树上有1001个结点,其中叶子结点的个数是()
A.250B.500C.254D.505E.以上答案都不对
4、有n个叶子的哈夫曼树的结点总数为()。
A.不确定B.2nC.2n+1D.2n-1
5、一棵二叉树高度为h,所有结点的度或为0,或为2,则这棵二叉树最少有()结点
A.2hB.2h-1C.2h+1D.h+1
6、高度为K的二叉树最大的结点数为()。
A.2kB.2k-1C.2k-1D.2k-1-1
7、一棵树高为K的完全二叉树至少有()个结点
A.2k–1B.2k-1–1C.2k-1D.2k
8、利用二叉链表存储树,则根结点的右指针是()。
A.指向最左孩子B.指向最右孩子C.空D.非空
9、对二叉树的结点从1开始进行连续编号,要求每个结点的编号大于其左、右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,可采用()次序的遍历实现编号。
A.先序B.中序C.后序D.从根开始按层次遍历
10、树的后根遍历序列等同于该树对应的二叉树的().
A.先序序列B.中序序列C.后序序列
11、在下列存储形式中,哪一个不是树的存储形式?
()
A.双亲表示法B.孩子链表表示法C.孩子兄弟表示法D.顺序存储表示法
12、一棵二叉树的前序遍历序列为ABCDEFG,它的中序遍历序列可能是()
A.CABDEFGB.ABCDEFGC.DACEFBGD.ADCFEG
13、某二叉树中序序列为A,B,C,D,E,F,G,后序序列为B,D,C,A,F,G,E则前序序列是:
A.E,G,F,A,C,D,BB.E,A,C,B,D,G,FC.E,A,G,C,F,B,DD.上面的都不对
14、上题的二叉树对应的森林包括多少棵树()
A.lB.2C.3D.概念上是错误的
15、对于前序遍历与中序遍历结果相同的二叉树为
(1);
对于前序遍历和后序遍历结果相同的二叉树为
(2)
A.一般二叉树B.只有根结点的二叉树C.根结点无左孩子的二叉树
D.根结点无右孩子的二叉树E.所有结点只有左子数的二叉树F.所有结点只有右子树的二叉树
判断
1、二叉树的前序遍历并不能唯一确定这棵树,但是,如果我们还知道该树的根结点是那一个,则可以确定这棵二叉树。
2、完全二叉树中,若一个结点没有左孩子,则它必是树叶。
3、一棵有n个结点的二叉树,从上到下,从左到右用自然数依次给予编号,则编号为i的结点的左儿子的编号为2i(2i第七章:
1.设无向图的顶点个数为n,则该图最多有()条边。
A.n-1B.n(n-1)/2C.n(n+1)/2D.0E.n2
2.一个n个顶点的连通无向图,其边的个数至少为()。
A.n-1B.nC.n+1D.nlogn;
3.一个有n个结点的图,最少有()个连通分量,最多有()个连通分量。
A.0B.1C.n-1D.n
4.在一个无向图中,所有顶点的度数之和等于所有边数()倍,在一个有向图中,所有顶点的入度之和等于所有顶点出度之和的()倍。
A.1/2B.2C.1D.4
5.下列哪一种图的邻接矩阵是对称矩阵?
()
A.有向图B.无向图C.AOV网D.AOE网
6.从邻接阵矩
可以看出,该图共有(①)个顶点;如果是有向图该图共有(②)条弧;如果是无向图,则共有(③)条边。
①.A.9B.3C.6D.1E.以上答案均不正确
②.A.5B.4C.3D.2E.以上答案均不正确
③.A.5B.4C.3D.2E.以上答案均不正确
7.下图中给出由7个顶点组成的无向图。
从顶点1出发,对它进行深度优先遍历得到的序列是(①),而进行广度优先遍历得到的顶点序列是(②)。
①.A.1354267B.1347652C.1534276D.1247653E.以上答案均不正确
②.A.1534267B.1726453C.l354276D.1247653E.以上答案均不正确
8.下面哪一方法可以判断出一个有向图是否有环(回路):
A.深度优先遍历B.拓扑排序C.求最短路径D.求关键路径
9.下面是求连通网的最小生成树的prim算法:
集合VT,ET分别放顶点和边,初始为
(1),下面步骤重复n-1次:
a:
(2);b:
(3);最后:
(4)。
(1).A.VT,ET为空B.VT为所有顶点,ET为空
C.VT为网中任意一点,ET为空D.VT为空,ET为网中所有边
(2).A.选i属于VT,j不属于VT,且(i,j)上的权最小
B.选i属于VT,j不属于VT,且(i,j)上的权最大
C.选i不属于VT,j不属于VT,且(i,j)上的权最小
D.选i不属于VT,j不属于VT,且(i,j)上的权最大
(3).A.顶点i加入VT,(i,j)加入ETB.顶点j加入VT,(i,j)加入ET
C.顶点j加入VT,(i,j)从ET中删去D.顶点i,j加入VT,(i,j)加入ET
(4).A.ET中为最小生成树B.不在ET中的边构成最小生成树
C.ET中有n-1条边时为生成树,否则无解D.ET中无回路时,为生成树,否则无解
10.已知有向图G=(V,E),其中V={V1,V2,V3,V4,V5,V6,V7},
E={,,,,,,,,},G的拓扑序列是()。
A.V1,V3,V4,V6,V2,V5,V7B.V1,V3,V2,V6,V4,V5,V7
C.V1,V3,V4,V5,V2,V6,V7D.V1,V2,V5,V3,V4,V6,V7
11.一个有向无环图的拓扑排序序列()是唯一的。
A.一定B.不一定
12.若一个有向图的邻接距阵中,主对角线以下的元素均为零,则该图的拓扑有序序列
A.存在B.不存在
13.在有向图G的拓扑序列中,若顶点Vi在顶点Vj之前,则下列情形不可能出现的是()。
A.G中有弧B.G中有一条从Vi到Vj的路径
C.G中没有弧D.G中有一条从Vj到Vi的路径
14.关键路径是事件结点网络中()。
A.从源点到汇点的最长路径B.从源点到汇点的最短路径
C.最长回路D.最短回路
15.下面关于求关键路径的说法不正确的是()。
A.求关键路径是以拓扑排序为基础的
B.一个事件的最早开始时间同以该事件为尾的弧的活动最早开始时间相同
C.一个事件的最迟开始时间为以该事件为尾的弧的活动最迟开始时间与该活动的持续时间的差
D.关键活动一定位于关键路径上
16.下列关于AOE网的叙述中,不正确的是()。
A.关键活动不按期完成就会影响整个工程的完成时间
B.任何一个关键活动提前完成,那么整个工程将会提前完成
C.所有的关键活动提前完成,那么整个工程将会提前完成
D.某些关键活动提前完成,那么整个工程将会提前完成
1.强连通分量是无向图的极大强连通子图。
()
2.有n个顶点的无向图,采用邻接矩阵表示,图中的边数等于邻接矩阵中非零元素之和的一半。
3.无向图的邻接矩阵一定是对称矩阵,有向图的邻接矩阵一定是非对称矩阵。
4.一个有向图的邻接表和逆邻接表中结点的个数可能不等。
()
5.不同的求最小生成树的方法最后得到的生成树是相同的.
6.有向无环图才能进行拓扑排序。
1.G是一个非连通无向图,共有28条边,则该图至少有______个顶点。
2.在有n个顶点的有向图中,若要使任意两点间可以互相到达,则至少需要______条弧。
3.构造连通网最小生成树的两个典型算法是______。
4.设G=(V,E)以邻接表存储,如图所示,试画出图的深度优先和广度优先生成树。
5.试分别用普里姆和克鲁斯卡尔算法写出下图的最小生成树及生成过程
6.下图是带权的有向图G的邻接表表示法,求:
(1).从结点V1到结点V8的最短路径;
(2).从结点V1到结点V8的关键路径。
7.如下所示的连通图,如果有关节点,请找出所有的关节点。
第九章查找表
1.下面关于二分查找的叙述正确的是()
A.表必须有序,表可以顺序方式存储,也可以链表方式存储
B.表必须有序且表中数据必须是整型,实型或字符型
C.表必须有序,而且只能从小到大排列
D.表必须有序,且表只能以顺序方式存储
2.用二分(对半)查找表的元素的速度比用顺序法()
A. 必然快B.必然慢C.相等D.不能确定
3.分别以下列序列构造二叉排序树,与用其它三个序列所构造的结果不同的是()
A.(100,80,90,60,120,110,130)
B.(100,120,110,130,80,60,90)
C.(100,60,80,90,120,110,130)
D.(100,80,60,90,120,130,110)
4.二叉查找树的查找效率与二叉树的(
(1))有关,在(
(2))时其查找效率最低
(1):
A.高度B.结点的多少C.树型D.结点的位置
(2):
A.结点太多B.完全二叉树C.呈单枝树D.结点太复杂。
5.下面关于m阶B树说法正确的是()
1每个结点至少有两棵非空子树;
2②树中每个结点至多有m一1个关键字;
3③所有叶子在同一层上;
4④当插入一个数据项引起B树结点分裂后,树长高一层。
A.①②③B.②③C.②③④D.③
6.在一棵含有n个关键字的m阶B-树中进行查找,至多读盘()次。
A.log2nB.1+log2nC.1+log
D.1+log
7.已知二叉排序树的左右子树均不为空,则__________上所有结点的值均小于它的根结点值,__________上所有结点的值均大于它的根结点的值。
8.完全二叉树肯定是平衡二叉树。
9.在查找树(二叉树排序树)中插入一个新结点,总是插入到叶结点下面。
10.对一棵二叉排序树按前序方法遍历得出的结点序列是从小到大的序列。
11.在9阶B-树中,除叶子以外的任意结点的分支数介于5和9之间。
12.动态查找表和静态查找表的重要区别在于前者包含有__________和__________运算,而后者不包含这两种运算。
13.在顺序表(8,11,15,19,25,26,30,33,42,48,50)中,用二分(折半)法查找关键码值20,需比较的关键码分别是
14.高度为4的3阶b-树中,最多有__________个关键字。
15.在一棵m阶B-树中,若在某结点中插入一个新关键字而引起该结点分裂,则此结点中原有的关键字的个数是__________;若在某结点中删除一个关键字而导致结点合并,则该结点中原有的关键字的个数是__________。
16.试画出从空树开始,由字符序列(t,d,e,s,u,g,b,j,a,k,r,i)构成的二叉平衡树,并为每一次的平衡处理指明旋转类型。
17.设依以下次序给出关键字:
34,16,19,21,5,49,24,62,3,17,45,8,构造3阶B-树。
要求从空树开始,每插入一个关键字,画出一个树形。
第十章排序
1.某内排序方法的稳定性是指()。
A.该排序算法不允许有相同的关键字记录
B.该排序算法允许有相同的关键字记录
C.平均时间为0(nlogn)的排序方法
D.以上都不对
2.下面给出的四种排序法中()排序法是不稳定性排序法。
A.插入B.冒泡C.二路归并D.堆排序
3.下列排序算法中,其中()是稳定的。
A.堆排序,冒泡排序B.快速排序,堆排序
C.直接选择排序,归并排序D.归并排序,冒泡排序
4.在文件“局部有序”或文件长度较小的情况下,最佳内部排序的方法是()
A.直接插入排序B.冒泡排序C.简单选择排序D.快速排序
5.从未排序序列中依次取出一个元素与已排序序列中的元素依次进行比较,然后将其放在已排序序列的合适位置,该排序方法称为()排序法。
A.插入B.选择C.希尔D.二路归并
6.对序列{15,9,7,8,20,-1,4}进行排序,进行一趟后数据的排列变为{4,9,-1,8,20,7,15};则采用的是()排序。
A.选择B.快速C.希尔D.冒泡
7.对序列{15,9,7,8,20,-1,4,}用希尔排序方法排序,经一趟后序列变为{15,-l,4,8,20,9,7}则该次采用的增量是()
A.lB.4C.3D.2
8.一组记录的关键码为(46,79,56,38,40,84),则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为()。
A.(38,40,46,56,79,84)B.(40,38,46,79,56,84)
C.(40,38,46,56,79,84)D.(40,38,46,84,56,79)
9.下列序列中,()是执行第一趟快速排序后所得的序列。
A.[68,11,18,69][23,93,73]
B.[68,11,69,23][18,93,73]
C.[93,73][68,11,69,23,18]
D.[68,11,69,23,18][93,73]
10.如果只想得到1000个元素组成的序列中第5个最小元素之前的部分排序的序列,用()方法最快。
A.起泡排序B.快速排列C.Shell排序
D.堆排序E.简单选择排序
11.以下序列不是堆的是()。
A.(100,85,98,77,80,60,82,40,20,10,66)
B.(10