数据结构练习112章Word文档格式.docx
《数据结构练习112章Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构练习112章Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
2、以下数据结构中,哪一个是线性结构()?
A.广义表B.二叉树C.稀疏矩阵D.串
3、在下面的程序段中,对x的赋值语句的频度为()
for(i=1;
i<
=n;
i++)
for(j=1;
j<
j++)
x=x+1;
A.O(2n)B.O(n)C.O(n2)D.O(log2n)
4、下面关于线性表的叙述中,错误的是哪一个?
()
A.线性表采用顺序存储,必须占用一片连续的存储单元。
B.线性表采用顺序存储,便于进行插入和删除操作。
C.线性表采用链接存储,不必占用一片连续的存储单元。
D.线性表采用链接存储,便于插入和删除操作。
5、某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间。
A.单链表B.仅有头指针的单循环链表C.双链表D.仅有尾指针的单循环链表
6、静态链表中指针表示的是().
A.内存地址B.数组下标C.下一元素地址D.左、右孩子地址
7、下面的叙述不正确的是()
A.线性表在链式存储时,查找第i个元素的时间同i的值成正比
B.线性表在链式存储时,查找第i个元素的时间同i的值无关
C.线性表在顺序存储时,查找第i个元素的时间同i的值成正比
D.线性表在顺序存储时,查找第i个元素的时间同i的值无关
8、若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为()(1<
=i<
=n+1)。
A.O(0)B.O
(1)C.O(n)D.O(n2)
9、在单链表指针为p的结点之后插入指针为s的结点,正确的操作是:
()。
A.p->
next=s;
s->
next=p->
next;
B.s->
p->
C.p->
next=s->
D.p->
10、对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是()
A.head==NULLB.head→next==NULLC.head→next==headD.head!
=NULL
11、一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1<
=n)个元素是()。
A.不确定B.n-i+1C.iD.n-i
12、有六个元素6,5,4,3,2,1的顺序进栈,问下列哪一个不是合法的出栈序列?
A.543612B.453126C.346521D.234156
13、设有三个元素X,Y,Z顺序进栈(进的过程中允许出栈),下列得不到的出栈排列是()。
A.XYZB.YZXC.ZXYD.ZYX
14、假设以数组A[m]存放循环队列的元素,其头尾指针分别为front和rear,则当前队列中的元素个数为()。
A.(rear-front+m)%mB.rear-front+1C.(front-rear+m)%mD.(rear-front)%m
15、若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为多少?
()
A.1和5B.2和4C.4和2D.5和1
16、下面关于串的的叙述中,哪一个是不正确的?
A.串是字符的有限序列B.空串是由空格构成的串
C.模式匹配是串的一种重要运算D.串既可以采用顺序存储,也可以采用链式存储
17、设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为()
A.求子串B.联接C.匹配D.求串长
18、设有数组A[i,j],数组的每个元素长度为3字节,i的值为1到8,j的值为1到10,数组从内存首地址BA开始顺序存放,当用以列为主存放时,元素A[5,8]的存储首地址为()。
A.BA+141B.BA+180C.BA+222D.BA+225
19、广义表A=(a,b,(c,d),(e,(f,g))),则下面表达式的值为()。
Head(Tail(Head(Tail(Tail(A)))))
A.(g)B.(d)C.cD.d
三、判断题
1、数据元素是数据的最小单位。
2、顺序存储方式的优点是存储密度大,且插入、删除运算效率高。
3、线性表采用链表存储时,结点和结点内部的存储空间可以是不连续的。
4、线性表的特点是每个元素都有一个前驱和一个后继。
5、一个稀疏矩阵Am*n采用三元组形式表示,若把三元组中有关行下标与列下标的值互换,并把m和n的值互换,则就完成了Am*n的转置运算。
6、所谓取广义表的表尾就是返回广义表中最后一个元素。
四、填空题
1、当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中的元素时,应采用_______存储结构。
2、线性表L=(a1,a2,…,an)用数组表示,假定删除表中任一元素的概率相同,则删除一个元素平均需要移动元素的个数是________。
3、对于一个具有n个结点的单链表,在已知的结点*p后插入一个新结点的时间复杂度为________,在给定值为x的结点后插入一个新结点的时间复杂度为________。
4、带头结点的双循环链表L中只有一个元素结点的条件是:
________
5、一个栈的输入序列是:
1,2,3则不可能的栈输出序列是_______。
6、用S表示入栈操作,X表示出栈操作,若元素入栈的顺序为1234,为了得到1342出栈顺序,相应的S和X的操作串为_______。
7、________又称作先进先出表。
8、组成串的数据元素只能是________。
9、设有C语言描述的二维数组A[10][20],其每个元素占两个字节,第一个元素的存储地址为100,若按行优先顺序存储,则元素A[6][6]存储地址为_______。
五、算法设计题
1、请设计一算法:
已知顺序表L,表中元素为整型且递增有序,现有一值为e的元素要插入L表,使插入后L表仍然有序。
2、已知L为非递减的顺序表,请设计算法删除L中重复的元素(即删除后使L表变为一递增表)。
3、已知带头结点的动态单链表L中的结点是按整数值递增排列的,试写一算法将值x为的结点插入到表L中,使L仍然有序。
4、设计一算法,逆置带头结点的动态单链表L。
5、在长度大于1的单循环链表中,既无头结点也无头指针。
s为指向链表中某个结点的指针,试编写算法删除结点*s的直接前趋结点。
六、程序填空题
不带头结点的单链表L进行就地逆置的算法,用L返回逆置后的链表的头指针。
voidreverse(linklist&
L)
{p=null;
q=L;
while(q!
=null)
{
(1);
q->
next=p;
p=q;
(2)___;
(3)_____;
第六章树
选择题
1.已知一算术表达式的中缀形式为A+B*C-D/E,后缀形式为ABC*+DE/-,其前缀形式为()
A.-A+B*C/DEB.-A+B*CD/EC.-+*ABC/DED.-+A*BC/DE
2.算术表达式a+b*(c+d/e)转为后缀表达式后为()
A.ab+cde/*B.abcde/+*+C.abcde/*++D.abcde*/++
3.设树T的度为4,其中度为1,2,3和4的结点个数分别为4,2,1,1则T中的叶子数为()
A.5B.6C.7D.8
4.设森林F对应的二叉树为B,它有m个结点,B的根为p,p的右子树结点个数为n,森林F中第一棵树的结点个数是()
A.m-nB.m-n-1C.n+1D.条件不足,无法确定
5.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是()
A.9B.11C.15D.不确定
6.具有10个叶结点的二叉树中有()个度为2的结点,
A.8B.9C.10D.ll
7.一棵完全二叉树上有1001个结点,其中叶子结点的个数为()
A.250B.500C.254D.505E.以上答案都不对
8.有n个叶子的哈夫曼树的结点总数为()。
A.不确定B.2nC.2n+1D.2n-1
9.一棵具有n个结点的完全二叉树的树高度(深度)是()
A.logn+1B.logn+1C.lognD.logn-1
10.深度为h的满m叉树的第k层有()个结点。
(1=<
k=<
h)
A.mk-1B.mk-1C.mh-1D.mh-1
11.在一棵高度为k的满二叉树中,结点总数为()
A.2k-1B.2kC.2k-1D.log2k+1
12.对二叉树的结点从1开始进行连续编号,要求每个结点的编号大于其左、右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,可采用()次序的遍历实现编号。
A.先序B.中序C.后序D.从根开始按层次遍历
13.树的后根遍历序列等同于该树对应的二叉树的().
A.先序序列B.中序序列C.后序序列
14.已知某二叉树的后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历是()。
A.acbedB.decabC.deabcD.cedba
15.二叉树的先序遍历和中序遍历如下:
先序遍历:
EFHIGJK;
中序遍历:
HFIEJKG。
该二叉树根的右子树的根是:
A、EB、F C、G D、H
16.n个结点的线索二叉树上含有的线索数为()
A.2nB.n-lC.n+lD.n
17.下述编码中哪一个不是前缀码()。
A.(00,01,10,11)B.(0,1,00,11)C.(0,10,110,111)D.(1,01,000,001)
18.从下列有关树的叙述中,选出5条正确的叙述()
A.二叉树中每个结点有两个子结点,而树无此限制,因此二叉树是树的特殊情况。
B.当K≥1时高度为K的二叉树至多有2k-1个结点。
C.用树的前序周游和中序周游可以导出树的后序周游。
D.线索二叉树的优点是便于在中序下查找前驱结点和后继结点。
E.将一棵树转换成二叉树后,根结点没有左子树。
F.一棵含有N个结点的完全二叉树,它的高度是LOG2N+1。
G.在二叉树中插入结点,该二叉树便不再是二叉树。
H.采用二叉树链表作树的存储结构,树的前序周游和其相应的二叉树的前序周游的结果是一样的。
I.哈夫曼树是带权路径最短的树,路径上权值较大的结点离根较近。
J.用一维数组存储二叉树时,总是以前序周游存储结点。
判断题:
1.完全二叉树中,若一个结点没有左孩子,则它必是树叶。
2.二叉树只能用二叉链表表示。
3.在二叉树的第i层上至少有2i-1个结点(i>
=1)
4.度为二的树就是二叉树。
5.在中序线索二叉树中,每一非空的线索均指向其祖先结点。
填空题:
1.具有256个结点的完全二叉树的深度为______。
2.已知一棵度为3的树有2个度为1的结点,3个度为2的结点,4个度为3的结点,则该树有______个叶子结点。
3.在一棵二叉树中,度为零的结点的个数为N0,度为2的结点的个数为N2,则有N0=______
4.已知二叉树有50个叶子结点,则该二叉树的总结点数至少是______。
5.设F是由T1,T2,T3三棵树组成的森林,与F对应的二叉树为B,已知T1,T2,T3的结点数分别为n1,n2和n3则二叉树B的左子树中有__
(1)_个结点,右子树中有_
(2)__个结点。
6.如某二叉树有20个叶子结点,有30个结点仅有一个孩子,则该二叉树的总结点数为______。
算法应用题
1、已知一棵度为m的树中有n1个度为1的结点,n2个度为2的结点,……,nm个度为m的结点,问该树中有多少个叶子结点?
2、已知一棵满二叉树的结点个数为20到40之间的素数,此二叉树的叶子结点有多少个?
(请给出具体的推理过程)
3、请采用顺序存储方式和链式存储方式,分别写出下图所示二叉树的存储结构。
A
BC
DEF
GH
4、求出上图所示二叉树的前序、中序和后序序列。
5、以二叉链表做存储结构,试编写按层次顺序(同一层自左至右)遍历二叉树的算法。
6、设一棵二叉树的先序、中序遍历序列分别为
先序遍历序列:
ABDFCEGH中序遍历序列:
BFDAGEHC
(1)画出这棵二叉树。
(2)画出这棵二叉树的中序线索树
(3)画出这棵二叉树的后序线索树
7、假设一个二叉树的两种遍历如下:
前序:
ABFGCHDEIJLK中序:
FGBHCDILJKEA
画出这棵二叉树以及它的中序线索树;
8、给定一组权值3,27,7,8,14,23,6,12
(1)试画出用Huffman算法建造的Huffman树;
(2)求Huffman编码和平均编码长度(考虑概率)
9、将下列森林转化为二叉树。
10、求上述森林的前序和中序序列。
算法设计题:
1.设计算法,求前序线索树中结点P的后继
2.设计算法,求中序线索树中结点P的后继
3.用二叉链表表示的二叉树T,结点的值为整型,请设计算法,求T中结点值大于0的结点数,并作为算法的返回值。
第七章图
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.当一个有N个顶点的图用邻接矩阵A表示时,顶点Vi的度是()。
A.
B.
C.
D.
+
7.下面哪一方法可以判断出一个有向图是否有环(回路):
A.深度优先遍历B.拓扑排序C.求最短路径D.广度优先遍历
8.在图采用邻接表存储时,求最小生成树的Prim算法的时间复杂度为()。
A.O(n)B.O(n+e)C.O(n2)D.O(n3)
9.求解最短路径的Floyd算法的时间复杂度为()。
A.O(n)B.O(n+c)C.O(n*n)D.O(n*n*n)
10.若一个有向图的邻接距阵中,主对角线以下的元素均为零,则该图的拓扑有序序列()。
A.存在B.不存在
11.一个有向无环图的拓扑排序序列()是唯一的。
A.一定B.不一定
12.在有向图G的拓扑序列中,若顶点Vi在顶点Vj之前,则下列情形不可能出现的是()。
A.G中有弧<
Vi,Vj>
B.G中有一条从Vi到Vj的路径
C.G中没有弧<
Vi,Vj>
D.G中有一条从Vj到Vi的路径
13.在用邻接表表示图时,拓扑排序算法时间复杂度为()。
A.O(n)B.O(n+e)C.O(n*n)D.O(n*n*n)
14.关键路径是事件结点网络中()。
A.从源点到汇点的最长路径B.从源点到汇点的最短路径C.最长回路D.最短回路
15.下列关于AOE网的叙述中,不正确的是()。
A.关键活动不按期完成就会影响整个工程的完成时间
B.任何一个关键活动提前完成,那么整个工程将会提前完成
C.所有的关键活动提前完成,那么整个工程将会提前完成
D.某些关键活动提前完成,那么整个工程将会提前完成
判断题
1.有e条边的无向图,在邻接表中有e个结点。
2.有向图的邻接矩阵是对称的。
3.任何无向图都存在生成树。
4.不同的求最小生成树的方法最后得到的生成树是相同的.()
5.有环图也能进行拓扑排序。
6.关键路径是AOE网中从源点到终点的最长路径。
填空题
1.具有10个顶点的无向图,边的总数最多为______。
2.在有n个顶点的有向图中,若要使任意两点间可以互相到达,则至少需要______条弧。
3.n个顶点的连通无向图,其边的条数至少为______。
4.N个顶点的连通图用邻接矩阵表示时,该矩阵至少有_______个非零元素。
5.构造连通网最小生成树的两个典型算法是______。
6.有一个用于n个顶点连通带权无向图的算法描述如下:
(1).设集合T1与T2,初始均为空;
(2).在连通图上任选一点加入T1;
(3).以下步骤重复n-1次:
a.在i属于T1,j不属于T1的边中选最小权的边;
b.该边加入T2。
上述算法完成后,T2中共有______条边,该算法称______算法,T2中的边构成图的______。
7.AOV网中,结点表示______,边表示______。
AOE网中,结点表示______,边表示______。
8.当一个AOV网用邻接表表示时,可按下列方法进行拓扑排序。
(1).查邻接表中入度为______的顶点,并进栈;
(2).若栈不空,则①输出栈顶元素Vj,并退栈;
②查Vj的直接后继Vk,对Vk入度处理,处理方法是______;
(3).若栈空时,输出顶点数小于图的顶点数,说明有______,否则拓扑排序完成。
1、对n个顶点的无向图,采用邻接矩阵表示,如何判别下列有关问题
1)图中有多少条边?
2)任意两个顶点i和j是否有边相连?
3)任意一个顶点的度是多少?
2.设G=(V,E)以邻接表存储,试写出深度优先和广度优先序列。
3、已知一无向图的邻接矩阵如下,求该图从顶点V1出发的广度优先遍历和深度优先遍历序列。
0010010
0001001
1001010
0110111
0001000
1011001
0101010
4.下图表示一个地区的通讯网,边表示城市间的通讯线路,边上的权表示架设线路花费的代价,如何选择能沟通每个城市且总代价最省的n-1条线路,画出所有可能的选择。
5、对下面的有向图,试利用DIJKSTRA算法从顶点1到其它顶点的最短路径,并写出执行该算法过程中每次循环的状态。
6、对下面的AOE网,求出各项活动的最早开始时间e(i)和最迟开始时间l(i),并回答:
工程完成的最短时间是多少?
哪些是关键活动?
7.下图是带权的有向图G的邻接表表示法,求:
(1).以结点V1出发深度遍历图G所得的结点序列;
(2).以结点V1出发广度遍历图G所得的结点序列;
(3).从结点V1到结点V8的最短路径;
(4).从结点V1到结点V8的关键路径。
第九章查找
1、对N个元素的表做顺序查找时,若查找每个元素的概率相同,则平均查找长度为()
A.(N+1)/2B.N/2C.ND.[(1+N)*N]/2
2.下面关于二分查找的叙述正确的是()
A.表必须有序,表可以顺序方式存储,也可以链表方式存储
B.表必须有序且表中数据必须是整型,实型或字符型
C.表必须有序,而且只能从小到大排列
D.表必须有序,且表只能以顺序方式存储
3.二叉查找树的查找效率与二叉树的(
(1))有关,在(
(2))时其查找效率最低
(1):
A.高度B.结点的多少C.树型D.结点的位置
(2):
A.结点太多B.完全二叉树C.呈单枝树D.结点太复杂。
4.若采用链地址法构造散列表,散列函数为H(key)=keyMOD17,则需(
(1))个链表。
这些链的链首指针构成一个指针数组,数组的下标范围为(
(2))
(1)A.17B.13C.16D.任意
(2)A.0至17B.1至17C.0至16D.1至16
1.Hash表的平均查找长度与处理冲突的方法无关。
2.若散列表的负载因子α<
1,则可避免碰撞的产生。
3.就平均查找长度而言,分块查找最小,折半查找次之,顺序查找最大。
1.在顺序表(8,11,15,19,25,26,30,33,42,48,50)中,用二分(折半)法查找关键码值20,需做的关键码比较次数为____.
1.设有一组关键字{9,01,23,14,55,20,84,27},采用哈希函数:
H(key)=keymod7,表长为10,用开放地址法的二次探测再散列方法Hi=(H(key)+di)mod10解决冲突。
要求:
对该关键字序列构造哈希表,并计算查找成功的平均查找长度。
2.已知散列表的地址空间为A[0..11],散列函数H(k)=kmod11,采用线性探测法处理冲突。
请将下列数据{25,16,38,47,79,82,51,39,89,151,231}依次插入到散列表中,并计算出在等概率情况下查找成功时的平均查找长度。
3、对长度为20的有序表进行二分查找,试画出它的一棵判定树,并求等概率情况下的平均查找长度。
4、设散列表的长度为15,散列函数H(K)=K%13,给定的关键字序列为20,16,29,82,37,02,06,28,55,39,23,10,试写出分别用拉链法和线性探测法解决冲突时所构造的散列表,并求出在等概率情况下,这两种方法查找成功时的平均查找长度。
第十章内部排序
1.下面给出的四种排序法中()排序法是不稳定性排序法。
A.插入B.冒泡C.二路归并D.堆排序
2.下列排序算法中,其中()是稳定的。
A.堆排序,冒泡排序B.快速排序,堆排序
C.直接选择排序,归并排序D.归并排序,冒泡排序
3.下面的排序算法中,不稳定的是()
A.起泡排序B.折半插入排序C.简单选择排序D.希尔排序E.基数排序F.堆排序。
4.在下面的排序