数据结构河北工业大学内部.docx
《数据结构河北工业大学内部.docx》由会员分享,可在线阅读,更多相关《数据结构河北工业大学内部.docx(19页珍藏版)》请在冰豆网上搜索。
数据结构河北工业大学内部
第一二章
一填空
1.衡量算法效率的两个重要指标称为算法的_时间复杂度_和空间复杂度______
2.一个算法应具有_有穷性,确定性,可行性,输入和输出___这五个特性。
3.线性表的长度是指_线性表中元素的个数_。
4.在线性表的顺序存储中,元素之间的逻辑关系是通过_元素的存储(物理)地址___决定的;在线性表的链接存储中,元素之间的逻辑关系是通过_指向下一个元素的指针___决定的。
5在双向链表中,每个结点包含两个指针域,一个指向前驱结点,另一个指向_后继__结点。
二、判断题
1.线性表的逻辑顺序与存储顺序总是一致的。
(FALSE)
2.顺序存储的线性表可以按序号随机存取。
(TRUE)
3.在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上并不一定紧邻。
(FALSE)
4.在线性表的链式存储结构中,逻辑上相邻的元素在物理位置上不一定相邻。
(TRUE)
5.在线性表的顺序存储结构中,插入和删除时,移动元素的个数与该元素的位置有关。
(TRUE)
6.线性表的链式存储结构是用一组任意的存储单元来存储线性表中数据元素的。
(TRUE)
三、单选题(请从下列A,B,C,D选项中选择一项)
1.线性表是()。
(A)一个有限序列,可以为空;(B)一个有限序列,不能为空;
(C)一个无限序列,可以为空;(D)一个无序序列,不能为空。
答:
A
2.对顺序存储的线性表,设其长度为n,在任何位置上插入或删除操作都是等概率的。
插入一个元素时平均要移动表中的()个元素。
(A)n/2(B)(n+1)/2(C)(n–1)/2(D)n
答:
A
3.线性表采用链式存储时,其地址()。
(A)必须是连续的;(B)部分地址必须是连续的;
(C)一定是不连续的;(D)连续与否均可以。
答:
D
4.用链表表示线性表的优点是()。
(A)便于随机存取
(B)花费的存储空间较顺序存储少
(C)便于插入和删除
(D)数据元素的物理顺序与逻辑顺序相同
答:
C
5.某链表中最常用的操作是在最后一个元素之后插入一个元素和删除最后一个元素,则采用()存储方式最节省运算时间。
(A)单链表
(B)双链表
(C)单循环链表
(D)带头结点的双循环链表
答:
D
6.循环链表的主要优点是()。
(A)不再需要头指针了
(B)已知某个结点的位置后,能够容易找到他的直接前趋
(C)在进行插入、删除运算时,能更好的保证链表不断开
(D)从表中的任意结点出发都能扫描到整个链表
答:
D
7.单链表中,增加一个头结点的目的是为了()。
(A)使单链表至少有一个结点(B)标识表结点中首结点的位置
(C)方便运算的实现(D)说明单链表是线性表的链式存储
答:
C
8.若某线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用()存储方式最节省运算时间()。
(A)单链表(B)顺序表(C)双链表(D)单循环链表
答:
B
四、简答题
1何时选用顺序表、何时选用链表作为线性表的存储结构为宜?
答:
在实际应用中,应根据具体问题的要求和性质来选择顺序表或链表作为线性表的存储结构,通常有以下几方面的考虑:
1.基于空间的考虑。
当要求存储的线性表长度变化不大,易于事先确定其大小时,为了节约存储空间,宜采用顺序表;反之,当线性表长度变化大,难以估计其存储规模时,采用动态链表作为存储结构为好。
2.基于时间的考虑。
若线性表的操作主要是进行查找,很少做插入和删除操作时,采用顺序表做存储结构为宜;反之, 若需要对线性表进行频繁地插入或删除等的操作时,宜采用链表做存储结构。
并且,若链表的插入和删除主要发生在表的首尾两端,则采用尾指针表示的单循环链表为宜。
2在顺序表中插入和删除一个结点需平均移动多少个结点?
具体的移动次数取决于哪两个因素?
答:
在等概率情况下,顺序表中插入一个结点需平均移动n/2个结点。
删除一个结点需平均移动(n-1)/2个结点。
具体的移动次数取决于顺序表的长度n以及需插入或删除的位置i。
i越接近n则所需移动的结点数越少。
3为什么在单循环链表中设置尾指针比设置头指针更好?
答:
尾指针是指向终端结点的指针,用它来表示单循环链表可以使得查找链表的开始结点和终端结点都很方便,设一带头结点的单循环链表,其尾指针为rear,则开始结点和终端结点的位置分别是rear->next->next和rear,查找时间都是O
(1)。
若用头指针来表示该链表,则查找终端结点的时间为O(n)。
五、分别设计算法,实现线性表的顺序存储结构和链式存储结构的原地置逆。
第三章
一单项选择题
1.栈中元素的进出原则是(B)
A.先进先出B.后进先出C.栈空则进D.栈满则出
2.若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为(C)A.iB.n=iC.n-i+1D.不确定
解释:
当p1=n,即n是最先出栈的,根据栈的原理,n必定是最后入栈的(事实上题目已经表明了),那么输入顺序必定是1,2,3,…,n,则出栈的序列是n,…,3,2,1。
(若不要求顺序出栈,则输出序列不确定)
3.判定一个栈ST(最多元素为m0)为空的条件是(B)
A.ST->top<>0B.ST->top==0C.ST->top<>m0D.ST->top==m0
4.在作进栈运算时,应先判别栈是否(①B),在作退栈运算时应先判别栈是否(②A)。
当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为(③B)。
为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的内存空间时,应将两栈的(④D)分别设在这片内存空间的两端,这样,当(⑤C)时,才产生上溢。
①,②:
A.空B.满C.上溢D.下溢
③:
A.n-1B.nC.n+1D.n/2
④:
A.长度B.深度C.栈顶D.栈底
⑤:
A.两个栈的栈顶同时到达栈空间的中心点.
B.其中一个栈的栈顶到达栈空间的中心点.
C.两个栈的栈顶在栈空间的某一位置相遇.
D.两个栈均不空,且一个栈的栈顶到达另一个栈的栈底.
5.某堆栈的输入序列为a,b,c,d,下面的四个序列中,不可能是它的输出序列的是(D)。
A.a,c,b,dB.b,c,d,aC.c,d,b,aD.d,c,a,b
6.若栈采用顺序存储方式存储,现两栈共享空间V[1..m],top[i]代表第i个栈(i=1,2)栈顶,栈1的底在v[1],栈2的底在V[m],则栈满的条件是(B)。
A.|top[2]-top[1]|=0B.top[1]+1=top[2]C.top[1]+top[2]=mD.top[1]=top[2]
7.设计一个判别表达式中左,右括号是否配对出现的算法,采用(D)数据结构最佳。
A.线性表的顺序存储结构B.队列C.线性表的链式存储结构D.栈
8.用不带头结点的单链表存储队列时,其队头指针指向队头结点,其队尾指针指向队尾结点,则在进行删除操作时(A)。
A.仅修改队头指针B.仅修改队尾指针
C.队头、队尾指针都要修改D.队头,队尾指针都可能要修改
9.递归过程或函数调用时,处理参数及返回地址,要用一种称为(C)的数据结构。
A.队列B.多维数组C.栈D.线性表
10.若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为多少?
(B)
A.1和5B.2和4C.4和2D.5和1
二填空题
1.线性表、栈和队列都是线性结构,可以在线性表的任意位置插入和删除元素;对于栈只能在栈顶插入和删除元素;对于队列只能在队尾插入元素,在队头删除元素。
2.栈是一种特殊的线性表,允许插入和删除运算的一端称为栈顶。
不允许插入和删除运算的一端称为栈底。
3.一个栈的输入序列是:
1,2,3则不可能的栈输出序列是__312_____。
4.循环队列的引入,目的是为了克服_队列的假溢出______。
5.用下标0开始的N元数组实现循环队列时,为实现下标变量M加1后在数组有效下标范围内循环,可采用的表达式是:
M=_(M+1)%N______;
6.队列的特点是_先进先出______。
7.表达式求值是_栈______应用的一个典型例子。
第四五章
一、填充题
1、一个串中任意个的字符组成的子序列称为该串的子串。
连续
2、串的静态存储结构中的两种不同的存储方式分别是格式和格式。
定长堆
3、两个串的相等,是指两个两串的相等,相同。
长度对应位置的字符
4、已知二维数组A有m行n列,采用行优先方式存储,每个数据元素占k个存储单元,并且第一个元素的存储地址是LOC(A[1,1]),则数据元素A[i,j]的地址是。
LOC(A[1,1])+(n*(i-1)+(j-1))*k
5、有一个10阶的对称矩阵,采用以行优先的压缩存储方式,已知元素A[1,1]的地址为1,则元素A[8,5]的地址是,元素A[5,8]的地址是。
3333
6、广义表(a,(a,b),d,e,((i,j),k))的长度是,深度是。
53
二、单选题
1、给出字符串A=’abcd’,它的子串个数是。
A、10B、9
C、11D、14
C
2、给出两个串A=’ABCDE’,B=’ABCdE’,它们的关系是。
A、B串大于A串B、B串等于A串
C、B串小于A串D、B串是A串的子串
A
3、设有两个串A和B,求B在A中首次出现的位置的操作称作。
A、连接B、求串长
C、模式匹配D、求子串
C
4、设串S1=’ABCDEFG’,串S2=’PQRST’,函数con(x,y)返回x和y串的连接串,函数subs(s,i,j)返回串s的从序号i的字符开始的j个字符组成的子串,而函数len(s)则返回串s的长度。
那么,表达式con(subs(S1,2,len(S2)),subs(S1,len(S2),2))的结果串是。
A、BCDEFB、BCDEFG
C、BCPQRSTD、BCDEFEF
D
5、数组通常具有的两种基本操作是。
A、建立与删除B、索引与修改
C、查找与修改D、查找与索引
C
6、在数组A中,每个数据元素A[i,j]的长度为3个字节,数组A的行下标i从1到8,而列下标j从1到10,从首地址SA开始连续存放在存储器中,若该数组按行优先存放时,数据元素A[8,5]的起始地址为。
A、SA+141B、SA+144
C、SA+225D、SA+222
DSA+(10*(8-1)+(5-1))*3
7.设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一元素,其存储地址为1,每个元素占一个地址空间,则a85的地址为()。
A.13B.33C.18D.40
B=i*(i-1)/2+j(i>=j)
8.若对n阶对称矩阵A以行序为主序方式将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[1..(n(n+1))/2]中,则在B中确定aij(iA.i*(i-1)/2+jB.j*(j-1)/2+iC.i*(i+1)/2+jD.j*(j+1)/2+I
B
9.对稀疏矩阵进行压缩存储目的是()。
A.便于进行矩阵运算B.便于输入和输出C.节省存储空间D.降低运算的时间复杂度
C
11.已知广义表LS=((a,b,c),(d,e,f)),运用head和tail函数取出LS中原子e的运算是()。
A.head(tail(LS))B.tail(head(LS))
C.head(tail(head(tail(LS)))D.head(tail(tail(head(LS))))
C
12.广义表(a,(b,c),d,e)的表头为()。
A.aB.a,(b,c)C.(a,(b,c))D.(a)
第六章
一、填空题
1.不相交的树的聚集称之为森林。
2.从概念上讲,树与二叉树是两种不同的数据结构,将树转化为二叉树的基本目的是_树可采用孩子-兄弟链表(二叉链表)做存储结构,目的是利用二叉树的已有算法解决树的有关问题。
3.深度为k的完全二叉树至少有2k-1个结点。
至多有2k-1个结点,若按自上而下,从左到右次序给结点编号(从1开始),则编号最小的叶子结点的编号是2k-2+1。
4.在一棵二叉树中,度为零的结点的个数为n0,度为2的结点的个数为n2,则有n0=n2+1。
5.一棵二叉树的第i(i≥1)层最多有2i-1 个结点;一棵有n(n>0)个结点的满二叉树共有(n+1)/2个叶子和(n-1)/2个非终端结点。
6.现有按中序遍历二叉树的结果为abc,问有5种不同形态的二叉树可以得到这一遍历结果。
7.哈夫曼树是带权路径最小的二叉树。
8.前缀编码是指任一个字符的编码都不是另一个字符编码的前缀的一种编码方法,是设计不等长编码的前提。
9.以给定的数据集合{4,5,6,7,10,12,18}为结点权值构造的Huffman树的加权路径长度是165。
10.树被定义为连通而不具有回路的(无向)图。
11.若一棵根树的每个结点最多只有两个孩子,且孩子又有左、右之分,次序不能颠倒,则称此根树为二叉树。
12.高度为k,且有个结点的二叉树称为二叉树。
2k-1满
13.带权路径长度最小的二叉树称为最优二叉树,它又被称为树。
Huffman
14.在一棵根树中,树根是为零的结点,而为零的结点是结点。
入度出度树叶
15.Huffman树中,结点的带权路径长度是指由到之间的路径长度与结点权值的乘积。
结点树根
16.满二叉树是指高度为k,且有个结点的二叉树。
二叉树的每一层i上,最多有个结点。
2k-12i-1
二、单选题
1.具有10个叶结点的二叉树中有(B)个度为2的结点。
(A)8(B)9(C)10(D)11
2.对二叉树的结点从1开始进行连续编号,要求每个结点的编号大于其左右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,则可采用_(3)次序的遍历实现编号。
(1)先序
(2)中序
(3)后序(4)从根开始按层遍历
3.由2、3、4、7作为结点权值构造的树的加权路径长度B。
A、33B、30
C、36D、40
4.高度为6的满二叉树,总共有的结点数是B。
A、15B、63
C、20D、25
5.下面描述根树转换成二叉树的特性中,正确的是C。
A、根树转换成的二叉树是唯一的,二叉树的根结点有左、右孩子。
B、根树转换成的二叉树是不唯一的,二叉树的根结点只有左孩子。
C、根树转换成的二叉树是唯一的,二叉树的根结点只有左孩子。
D、根树转换成的二叉树是不唯一的,二叉树的根结点有左、右孩子。
6.如图所示的4棵二叉树中,不是顺序二叉树的是。
A、○B、○
○○○○
○○○○○○
C、○D、○
○○○○
○○○○
C
7.某二叉树先序遍历的结点序列是abdgcefh,中序遍历的结点序列是dgbaechf,则其后序遍历的结点序列是D。
A、bdgcefhaB、gdbecfha
C、bdgaechfD、gdbehfca
8.已知二叉树按中序遍历所得到的结点序列为DCBGEAHFIJK,按后序遍历所得到的结点序列为DCEGBFHKJIA,按先序遍历所得到的结点序列为ABCDGEIHFJK。
9.设n,m为一棵二叉树上的两个结点,在中序遍历时,n在m前的条件是C。
A、n在m右方B、n是m祖先
C、n在m左方D、n是m子孙
10.二叉树第i层结点的结点个数最多是(设根的层数为1):
A
A)2i-1B)2i-1
C)2iD)2i-1
11.树的后根遍历序列等同于该树对应的二叉树的:
B
A)先序序列B)中序序列C)后序序列
12.树最适合用来表示_C___。
A.有序数据元素 B.无序数据元素
C.元素之间具有分支层次关系的数据 D.元素之间无联系的数据
13.由于二叉树中每个结点的度最大为2,所以二叉树是一种特殊的树,这种说法_B___。
A.正确 B.错误
14.假定在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为 B 个。
A.15 B.16 C.17 D.47
15.按照二叉树的定义,具有3个结点的不同形状的二叉树有__C__种。
A.3 B.4 C.5 D.6
16.深度为5的二叉树至多有__C__个结点。
A.16 B.32 C.31 D.10
17.对一个满二叉树,m个树叶,n个结点,深度为h,则__D__。
A.n=h+m B.h+m=2n C.m=h-1 D.n=2h-1
18.任何一棵二叉树的叶结点在先序、中序和后序遍历序列中的相对次序_A___。
A.不发生改变 B.发生改变 C.不能确定 D.以上都不对
19.如果某二叉树的前根次序遍历结果为stuwv,中序遍历为uwtvs,那么该二叉树的后序为__C__。
A.uwvts B.vwuts C.wuvts D.wutsv
20.二叉树的前序遍历序列中,任意一个结点均处在其子女结点的前面,这种说法__A__。
A.正确 B.错误
21.在一非空二叉树的中序遍历序列中,根结点的右边_A___。
A.只有右子树上的所有结点 B.只有右子树上的部分结点
C.只有左子树上的部分结点 D.只有左子树上的所有结点
22.已知某二叉树的后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是__D__。
A.acbed B.decab C.deabc D.cedba
23.实现任意二叉树的后序遍历的非递归算法而不使用栈结构,最佳方案是二叉树采用_C___存储结构。
A.二叉链表 B.广义表存储结构C.三叉链表D.顺序存储结构
24.在线索化二叉树中,t所指结点没有左子树的充要条件是_B___。
A.t—>left=NULL B.t—>ltag=1
C.t—>ltag=1且t—>left=NULL D.以上都不对
25.二叉树按某种顺序线索化后,任一结点均有指向其前驱和后续的线索,这种说法_B___。
A.正确 B.错误
26.树的基本遍历策略可分为先根遍历和后根遍历;二叉树的基本遍历策略可分为先序遍历、中序遍历和后序遍历。
这里,我们把由树转化得到的二叉树叫做这棵数对应的二叉树。
结论__A__是正确的。
A.树的先根遍历序列与其对应的二叉树的先序遍历序列相同
B.树的后根遍历序列与其对应的二叉树的后序遍历序列相同
C.树的先根遍历序列与其对应的二叉树的中序遍历序列相同
D.以上都不对
第七章.第7章图
一、选择题
1.对于一个具有n个顶点和e条边的有向图,在用邻接表表示图时,拓扑排序算法时间复杂度为( )
A)O(n)B)O(n+e)C)O(n*n)D)O(n*n*n)
【答案】B
2.设无向图的顶点个数为n,则该图最多有( )条边。
A)n-1B)n(n-1)/2C)n(n+1)/2D)n2
【答案】B
3.连通分量指的是( )
A)无向图中的极小连通子图
B)无向图中的极大连通子图
C)有向图中的极小连通子图
D)有向图中的极大连通子图
【答案】B
4.n个结点的完全有向图含有边的数目( )
A)n*nB)n(n+1)C)n/2D)n*(n-1)
【答案】D
5.关键路径是( )
A)AOE网中从源点到汇点的最长路径
B)AOE网中从源点到汇点的最短路径
C)AOV网中从源点到汇点的最长路径
D)AOV网中从源点到汇点的最短路径
【答案】A
6.有向图中一个顶点的度是该顶点的( )
A)入度B)出度C)入度与出度之和D)(入度+出度)/2
【答案】C
7.有e条边的无向图,若用邻接表存储,表中有( )边结点。
A)eB)2eC)e-1D)2(e-1)
【答案】B
8.实现图的广度优先搜索算法需使用的辅助数据结构为( )
A)栈B)队列C)二叉树D)树
【答案】B
9.实现图的非递归深度优先搜索算法需使用的辅助数据结构为( )
A)栈B)队列C)二叉树D)树
【答案】A
10.存储无向图的邻接矩阵一定是一个( )
A)上三角矩阵B)稀疏矩阵C)对称矩阵D)对角矩阵
【答案】C
11.在一个有向图中所有顶点的入度之和等于出度之和的( )倍
A)1/2B)1C)2D)4
【答案】B
12.在图采用邻接表存储时,求最小生成树的Prim算法的时间复杂度为( )
A)O(n)B)O(n+e)C)O(n2)D)O(n3)
【答案】B
13.下列关于AOE网的叙述中,不正确的是( )
A)关键活动不按期完成就会影响整个工程的完成时间
B)任何一个关键活动提前完成,那么整个工程将会提前完成
C)所有的关键活动提前完成,那么整个工程将会提前完成
D)某些关键活动提前完成,那么整个工程将会提前完成
【答案】B
14.具有10个顶点的无向图至少有多少条边才能保证连通( )
A)9B)10C)11D)12
【答案】A
15.在含n个顶点和e条边的无向图的邻接矩阵中,零元素的个数为( )
A)eB)2eC)n2-eD)n2-2e
【答案】D
16.对于一个具有n个顶点和e条边的无向图,如果采用邻接表来表示,则其表头向量的大小为。
A、nB、n+1
C、n-1D、n+e
【答案】A
二、填空题
1.无