数据结构习题Word文件下载.docx
- 文档编号:19138710
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:23
- 大小:74.10KB
数据结构习题Word文件下载.docx
《数据结构习题Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据结构习题Word文件下载.docx(23页珍藏版)》请在冰豆网上搜索。
)__。
i=s=0;
while(s<
n)
{i++;
s+=i;
}
10.下面程序段的时间复杂度是__O(
s=0;
s+=B[i][j];
sum=s;
11.下面程序段的时间复杂度是__O(log
n)__。
i=1;
while(i<
=n)
i=i*3;
12.衡量算法正确性的标准通常是_____________程序对于精心设计的典型合法数据输入能得出符合要求的结果。
13.算法时间复杂度的分析通常有两种方法,即__事后统计_________和____事前估计_______的方法,通常我们对算法求时间复杂度时,采用后一种方法。
三、求下列程序段的时间复杂度。
1.x=0;
for(i=1;
for(j=i+1;
=n;
x++;
2.x=0;
for(j=1;
=n-i;
x++;
3.inti,j,k;
{c[i][j]=0;
for(k=0;
k<
k++)c[i][j]=a[i][k]*b[k][j]
4.i=n-1;
while((i>
=0)&
&
A[i]!
=k))
j--;
return(i);
5.fact(n)
{if(n<
=1)return
(1);
else
return(n*fact(n-1));
三、算法设计题1.O(
)2.O(
)3.O(n
)4.O(n)5.O(n)1zG_W*c_p_w*M_p1k0
4.从一个具有n个结点的单链表中查找其值等于x的结点时,在查找成功的情况下,需平均比较___C_____个元素结点。
A.n/2B.nC.(n+1)/2D.(n-1)/2
5.在双向循环链表中,在p所指的结点之后插入s指针所指的结点,其操作是__D__。
D.s->
prior=p;
s->
next=p->
next;
p->
next->
prior=s;
next=s;
12.在等概率情况下,顺序表的插入操作要移动__一半____结点.
15.设有一个栈,元素的进栈次序为A,B,C,D,E,下列是不可能的出栈序列___C_______。
A.A,B,C,D,EB.B,C,D,E,AC.E,A,B,C,DD.E,D,C,B,A
18.在具有n个单元的顺序存储的循环队列中,假定front和rear分别为队头指针和队尾指针,则判断队满的条件为___D_____。
A.rear%n==frontB.(front+l)%n==rearC.rear%n-1==frontD.(rear+l)%n==front
19.在具有n个单元的顺序存储的循环队列中,假定front和rear分别为队头指针和队尾指针,则判断队空的条件为_C_______。
A.rear%n==frontB.front+l=rearC.rear==frontD.(rear+l)%n=front
1.线性表是一种典型的__线性__结构。
2.在一个长度为n的顺序表的第i个元素之前插入一个元素,需要后移_n-i+1___个元素。
3.顺序表中逻辑上相邻的元素的物理位置___相邻_____。
4.要从一个顺序表删除一个元素时,被删除元素之后的所有元素均需__前移_____一个位置,移动过程是从__前_____向__后____依次移动每一个元素。
5.在线性表的顺序存储中,元素之间的逻辑关系是通过__物理储存位置_____决定的;
在线性表的链接存储中,元素之间的逻辑关系是通过__链域的指针值_____决定的。
6.在双向链表中,每个结点含有两个指针域,一个指向____前趋___结点,另一个指向__后继_____结点。
7.当对一个线性表经常进行存取操作,而很少进行插入和删除操作时,则采用___链式____存储结构为宜。
相反,当经常进行的是插入和删除操作时,则采用__线性___存储结构为宜。
8.顺序表中逻辑上相邻的元素,物理位置___一定____相邻,单链表中逻辑上相邻的元素,物理位置___不一定____相邻。
9.线性表、栈和队列都是___线性____结构,可以在线性表的___任意___位置插入和删除元素;
对于栈只能在___栈尾____位置插入和删除元素;
对于队列只能在___队尾____位置插入元素和在___对头____位置删除元素。
10.根据线性表的链式存储结构中每个结点所含指针的个数,链表可分为____单链表_____和___双链表____;
而根据指针的联接方式,链表又可分为____循环链表____和____非循环链表_____。
11.在单链表中设置头结点的作用是___空表和非空表统一,算法处理一致_____。
12.对于一个具有n个结点的单链表,在已知的结点p后插入一个新结点的时间复杂度为__O
(1)____,在给定值为x的结点后插入一个新结点的时间复杂度为__O(n)_____。
13.对于一个栈作进栈运算时,应先判别栈是否为__栈满_____,作退栈运算时,应先判别栈是否为__栈空_____,当栈中元素为m时,作进栈运算时发生上溢,则说明栈的可用最大容量为___m____。
为了增加内存空间的利用率和减少发生上溢的可能性,由两个栈共享一片连续的内存空间时,应将两栈的___栈头____分别设在这片内存空间的两端,这样只有当__栈头相遇__时才产生上溢。
14.设有一空栈,现有输入序列1,2,3,4,5,经过push,push,pop,push,pop,push,push后,输出序列是____2、3_____。
15.无论对于顺序存储还是链式存储的栈和队列来说,进行插入或删除运算的时间复杂度均相同为____O
(1)______。
6.假定有四个元素A,B,C,D依次进栈,进栈过程中允许出栈,试写出所有可能的出栈序列。
ABCDABDCACDBACBDADCBBADCBACDBCADBCDABDCACBADCBDACDBADCBA
8.下述算法的功能是什么?
LinkList*Demo(LinkList*L)
{//L是无头结点的单链表
LinkList*q,*p;
if(L&
L->
next)
{q=L;
L=L->
p=L;
while(p->
next)
p=p->
p->
next=q;
q->
next=NULL;
}
return(L);
8.该算法的功能是:
将开始结点摘下链接到终端结点之后成为新的终端结点,而原来的第二个结点成为新的开始结点,返回新链表的头指针。
1.设二维数组A[0…m-1][0…n-1]按行优先顺序存储在内存中,第一个元素的地址为p,每个元素占k个字节,则元素aij的地址为(A)。
A.p+[i*n+j-1]*kB.p+[(i-1)*n+j-1]*kC.p+[(j-1)*n+i-1]*kD.p+[j*n+i-1]*k
2.已知二维数组A10×
10中,元素a20的地址为560,每个元素占4个字节,则元素a10的地址为(A)。
A.520B.522C.524D.518
3.若数组A[0…m][0…n]按列优先顺序存储,则aij地址为()。
A.LOC(a00)+[j*m+i]B.LOC(a00)+[j*n+i]C.LOC(a00)+[(j-1)*n+i-1]D.LOC(a00)+[(j-1)*m+i-1]
4.若下三角矩阵An×
n,按列顺序压缩存储在数组Sa[0…(n+1)n/2]中,则非零元素aij的地址为()。
(设每个元素占d个字节)
A.[(j-1)*n-
+i-1]*dB.[(j-1)*n-
+i]*dC.[(j-1)*n-
+i+1]*dD.[(j-1)*n-
+i-2]*d
5.设有广义表D=(a,b,D),其长度为(B),深度为(A)。
A.无穷大B.3C.2D.5
6.广义表A=(a),则表尾为(C)。
A.aB.(())C.空表D.(a)
7.广义表A=((x,(a,B)),(x,(a,B),y)),则运算head(head(tail(A)))的结果为(A)。
A.xB.(a,B)C.(x,(a,B))D.A
8.下列广义表用图来表示时,分支结点最多的是(A)。
A.L=((x,(a,B)),(x,(a,B),y))B.A=(s,(a,B))
C.B=((x,(a,B),y))D.D=((a,B),(c,(a,B),D)
9.通常对数组进行的两种基本操作是(C)。
A.建立与删除B.索引和修改C.查找和修改D.查找与索引
10.假定在数组A中,每个元素的长度为3个字节,行下标i从1到8,列下标j从1到10,从首地址SA开始连续存放在存储器内,存放该数组至少需要的单元数为(C)。
A.80B.100C.240D.270
11.数组A中,每个元素的长度为3个字节,行下标i从1到8,列下标j从1到10,从首地址SA开始连续存放在存储器内,该数组按行存放时,元素A[8][5]的起始地址为(C)。
A.SA+141B.SA+144C.SA+222D.SA+225
12.稀疏矩阵一般的压缩存储方法有两种,即(C)。
A.二维数组和三维数组B.三元组和散列C.三元组和十字链表D.散列和十字链表
13.若采用三元组压缩技术存储稀疏矩阵,只要把每个元素的行下标和列下标互换,就完成了对该矩阵的转置运算,这种观点()。
A.正确B.不正确
14.一个广义表的表头总是一个(D)。
A.广义表B.元素C.空表D.元素或广义表
15.一个广义表的表尾总是一个(A)。
A.广义表B.元素C.空表D.元素或广义表
16.数组就是矩阵,矩阵就是数组,这种说法(B)。
A.正确B.错误C.前句对,后句错D.后句对
二、填空题
1.一维数组的逻辑结构是___线性结构_________,存储结构是____顺序储存结构__________;
对于二维或多维数组,分为______以行为主序________和______以列为主序________两种不同的存储方式。
2.对于一个二维数组A[m][n],若按行序为主序存储,则任一元素A[i][j]相对于A[0][0]的地址为_____i*n+j_个元素位置________。
3.一个广义表为(a,(a,b),d,e,((i,j),k)),则该广义表的长度为__5___,深度为__3___。
4.一个稀疏矩阵为,则对应的三元组线性表为___((0,2,2),(1,0,3),(2,2,-1),(2,3,5))__________。
5.一个n×
n的对称矩阵,如果以行为主序或以列为主序存入内存,则其容量为______________。
6.已知广义表A=((a,b,c),(d,e,f)),则运算head(tail(tail(A)))=____e________。
7.设有一个10阶的对称矩阵A,采用压缩存储方式以行序为主序存储,a
为第一个元素,其存储地址为0,每个元素占有1个存储地址空间,则a
的地址为______________。
8.已知广义表Ls=(a,(b,c,d),e),运用head和tail函数取出Ls中的原子b的运算是___head(head(tail(LS)))___________。
9.三维数组R[c1…d1,c2…d2,c3…d3]共含有______________个元素。
(其中:
c1≤d1,c2≤d2,c3≤d3)
10.数组A[1…10,-2…6,2…8]以行优先的顺序存储,设第一个元素的首地址是100,每个元素占3个存储长度的存储空间,则元素A[5,0,7]的存储地址为______________。
三、判断题
1.数组可看作基本线性表的一种推广,因此与线性表一样,可以对它进行插入、删除等操作。
()
2.多维数组可以看作数据元素也是基本线性表的基本线性表。
3.以行为主序或以列为主序对于多维数组的存储没有影响。
4.对于不同的特殊矩阵应该采用不同的存储方式。
5.采用压缩存储之后,下三角矩阵的存储空间可以节约一半。
6.在一般情况下,采用压缩存储之后,对称矩阵是所有特殊矩阵中存储空间节约最多的。
7.矩阵不仅是表示多维数组,而且是表示图的重要工具。
8.距阵中的数据元素可以是不同的数据类型。
9.矩阵中的行列数往往是不相等的。
10.广义表的表头可以是广义表,也可以是单个元素。
11.广义表的表尾一定是一个广义表。
12.广义表的元素可以是子表,也可以是单元素。
13.广义表不能递归定义。
14.广义表实际上是基本线性表的推广。
15.广义表的组成元素可以是不同形式的元素。
1.A2.A3.A4.B5.BA6.C7.A8.A9.C10.C11.C12.C13.B14.D15.A16.B
1.线性结构,顺序结构,以行为主序,以列为主序2.i×
n+j个元素位置3.5,34.((0,2,2),(1,0,3),(2,2,-1),(2,3,5))5.n×
(n+1)/26.e7.418.head(head(tail(Ls)))9.(d
-c
+1)×
(d
+1)10.9131.×
2.√3.√4.√5.×
6.×
7.√8.×
9.×
10.√11.√12.√13.×
14.√15.√
1.在一棵度为3的树中,度为3的结点数为2个,度为2的结点数为1个,度为1的结点数为2个,则度为0的结点数为(C)个。
A.4B.5C.6D.7
2.假设在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为()个。
A.15B.16C.17D.47
3.假定一棵三叉树的结点数为50,则它的最小高度为()。
A.3B.4C.5D.6
4.在一棵二叉树上第4层的结点数最多为(D)。
A.2B.4C.6D.8
5.用顺序存储的方法将完全二叉树中的所有结点逐层存放在数组中R[1..n],结点R[i]若有左孩子,其左孩子的编号为结点()。
A.R[2i+1]B.R[2i]C.R[i/2]D.R[2i-1]
6.由权值分别为3,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为(D)。
A.24B.48C.72D.53
7.线索二叉树是一种(C)结构。
A.逻辑B.逻辑和存储C.物理D.线性
8.线索二叉树中,结点p没有左子树的充要条件是(B)。
A.p->
lc=NULLB.p->
ltag=1C.p->
ltag=1且p->
lc=NULLD.以上都不对
9.设n,m为一棵二叉树上的两个结点,在中序遍历序列中n在m前的条件是(B)。
A.n在m右方B.n在m左方C.n是m的祖先D.n是m的子孙
10.如果F是由有序树T转换而来的二叉树,那么T中结点的前序就是F中结点的(B)。
A.中序B.前序C.后序D.层次序
11.欲实现任意二叉树的后序遍历的非递归算法而不必使用栈,最佳方案是二叉树采用()存储结构。
A.三叉链表B.广义表C.二叉链表D.顺序
12.下面叙述正确的是(D)。
A.二叉树是特殊的树B.二叉树等价于度为2的树
C.完全二叉树必为满二叉树D.二叉树的左右子树有次序之分
13.任何一棵二叉树的叶子结点在先序、中序和后序遍历序列中的相对次序(A)。
A.不发生改变B.发生改变C.不能确定D.以上都不对
14.已知一棵完全二叉树的结点总数为9个,则最后一层的结点数为(B)。
A.1B.2C.3D.4
15.根据先序序列ABDC和中序序列DBAC确定对应的二叉树,该二叉树(A)。
A.是完全二叉树B.不是完全二叉树C.是满二叉树D.不是满二叉树
二、判断题
1.二叉树中每个结点的度不能超过2,所以二叉树是一种特殊的树。
( )
2.二叉树的前序遍历中,任意结点均处在其子女结点之前。
( )
3.线索二叉树是一种逻辑结构。
( )
4.哈夫曼树的总结点个数(多于1时)不能为偶数。
( )
5.由二叉树的先序序列和后序序列可以唯一确定一颗二叉树。
( )
6.树的后序遍历与其对应的二叉树的后序遍历序列相同。
7.根据任意一种遍历序列即可唯一确定对应的二叉树。
8.满二叉树也是完全二叉树。
9.哈夫曼树一定是完全二叉树。
( )
10.树的子树是无序的。
( )
三、填空题
1.假定一棵树的广义表表示为A(B(E),C(F(H,I,J),G),D),则该树的度为__3___,树的深度为__4__,终端结点的个数为___6___,单分支结点的个数为___1___,双分支结点的个数为__1____,三分支结点的个数为___2____,C结点的双亲结点为___A____,其孩子结点为___F____和____G___结点。
2.设F是一个森林,B是由F转换得到的二叉树,F中有n个非终端结点,则B中右指针域为空的结点有_______个。
3.对于一个有n个结点的二叉树,当它为一棵____完全____二叉树时具有最小高度,即为___
____,当它为一棵单支树具有__最大_____高度,即为___n____。
4.由带权为3,9,6,2,5的5个叶子结点构成一棵哈夫曼树,则带权路径长度为_55__。
5.在一棵二叉排序树上按___中序____遍历得到的结点序列是一个有序序列。
6.对于一棵具有n个结点的二叉树,当进行链接存储时,其二叉链表中的指针域的总数为___2n____个,其中____n-1___个用于链接孩子结点,___n+1____个空闲着。
7.在一棵二叉树中,度为0的结点个数为n0,度为2的结点个数为n2,则n0=___n2+1__。
8.一棵深度为k的满二叉树的结点总数为_______,一棵深度为k的完全二叉树的结点总数的最小值为_____,最大值为______。
9.由三个结点构成的二叉树,共有__5__种不同的形态。
10.设高度为h的二叉树中只有度为0和度为2的结点,则此类二叉树中所包含的结点数至少为_2h-1___。
11.一棵含有n个结点的k叉树,______形态达到最大深度,____形态达到最小深度。
12.对于一棵具有n个结点的二叉树,若一个结点的编号为i(1≤i≤n),则它的左孩子结点的编号为___2i_____,右孩子结点的编号为___2i+1_____,双亲结点的编号为__i/2______。
13.对于一棵具有n个结点的二叉树,采用二叉链表存储时,链表中指针域的总数为_________个,其中___________个用于链接孩子结点,_____________个空闲着。
14.哈夫曼树是指________________________________________________的二叉树。
15.空树是指_______结点数为0_________________,最小的树是指________只有根结点的树_______________。
16.二叉树的链式存储结构有______________和_______________两种。
17.三叉链表比二叉链表多一个指向______________的指针域。
18.线索是指______________指向结点前驱和后继信息的指针___________________。
19.线索链表中的rtag域值为__1___时,表示该结点无右孩子,此时__rchild____域为指向该结点后继线索的指针。
20.本节中我们学习的树的存储结构有_____________、___________和___________。
四、应用题
2.一棵度为2的树与一棵二叉树有何区别。
3.试分别画出具有3个结点的树和二叉树的所有不同形态?
4.已知用一维数组存放的一棵完全二叉树:
ABCDEFGHIJKL,写出该二叉树的先序、中序和后序遍历序列。
7.假设一棵二叉树的先序序列为EBADCFHGIKJ,中序序列为ABCDEFGHIJK,请写出该二叉树的后序遍历序列。
8.假设一棵二叉树的后序序列为DCEGBFHKJIA,中序序列为DCBGEAHFIJK,请写出该二叉树的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 习题
![提示](https://static.bdocx.com/images/bang_tan.gif)