当前位置:首页 > 数据结构习题及答案2009年12月14日
四、应用题
1.有5个元素,其入栈次序为:A,B,C,D,E,在各种可能的出栈次序中,以元素C,D最先出栈(即C第一个且D第二个出栈)的次序有哪几个?
2.设一数列的输入顺序为123456,若采用栈结构,并以I和O分别表示入栈和出栈操作,试问通过入出栈操作的合法序列。
(1)能否得到输出顺序为325641的序列。 (2)能否得到输出顺序为154623的序列。
3.用一个数组S(设大小为MAX)作为两个堆栈的共享空间。请说明共享方法,栈满/栈空的判断条件,并用C语言写出入栈的操作。 五 算法设计题
1.假设以I和O分别表示入栈和出栈操作。栈的初态和终态均为空,入栈和出栈的操作序列可表示为仅由I和O组成的序列,称可以操作的序列为合法序列,否则称为非法序列。 (1)下面所示的序列中哪些是合法的?
A. IOIIOIOO B. IOOIOIIO C. IIIOIOIO D. IIIOOIOO
(2)通过对(1)的分析,写出一个算法,判定所给的操作序列是否合法。若合法,返回true,否则返回false(假定被判定的操作序列已存入一维数组中)。
2.请利用两个栈S1和S2来模拟一个队列。已知栈的三个运算定义如下:PUSH(ST,x):元素x入ST栈;POP(ST,x):ST栈顶元素出栈,赋给变量x;Sempty(ST):判ST栈是否为空。那么如何利用栈的运算来实现该队列的三个运算:enqueue:插入一个元素入队列; dequeue:删除一个元素出队列;queue_empty:判队列为空。(请写明算法的思想及必要的注释) 3.试将下列递归过程改写为非递归过程。 void test(int &sum) { int x; scanf(x);
if(x=0) sum=0 else {test(sum); sum+=x;} printf(sum);
}
第4章 串
一、选择题
1.下面关于串的的叙述中,哪一个是不正确的?( )
A.串是字符的有限序列 B.空串是由空格构成的串
C.模式匹配是串的一种重要运算 D.串既可以采用顺序存储,也可以采用链式存储 2.若串S1=‘ABCDEFG’,S2=‘9898’,S3=‘###’,S4=‘012345’,执行concat(replace (S1,substr(S1,length(S2),length(S3)),S3),substr(S4,index(S2,‘8’),length(S2))) 其结果为( )
A.ABC###G0123 B.ABCD###2345 C.ABC###G1234 D.ABC###G2345
3.设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为( )
A.求子串 B.联接 C.匹配 D.求串长 4.模式串t=‘abcaabbca’,该模式串的next数组的值为( )。
A.0 1 1 1 2 2 1 1 1 B.0 1 1 1 2 1 2 1 1 C.0 1 1 1 0 0 1 3 1 D.0 1 1 1 2 2 3 1 1 5.串的长度是指( )
A.串中所含不同字母的个数 B.串中所含字符的个数
5
C.串中所含不同字符的个数 D.串中所含非空格字符的个数 二、判断题
1.KMP算法的特点是在模式匹配时指示主串的指针不会变小。( )
2.设模式串的长度为m,目标串的长度为n,当n≈m且处理只匹配一次的模式时,朴素的匹配(即子串定位函数)算法所花的时间代价可能会更为节省。( ) 3.串是一种数据对象和操作都特殊的线性表。( ) 二、填空题
1.组成串的数据元素只能是________。 2.INDEX(‘DATASTRUCTURE’,‘STR’)=________。
3.设正文串长度为n,模式串长度为m,则串匹配的KMP算法的时间复杂度为________。 4.设T和P是两个给定的串,在T中寻找等于P的子串的过程称为模式匹配,称P为____。 5.串是一种特殊的线性表,其特殊性表现在____。 6. 串的两种最基本的存储方式是____。
7.两个字符串相等的充分必要条件是_______。
第5章 数组和广义表
一、选择题
1.设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一元素,其存储地址为1,每个元素占一个地址空间,则a85的地址为( )。
A. 13 B. 33 C. 18 D. 40
2.若对n阶对称矩阵A以行序为主序方式将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[1..(n(n+1))/2]中,则在B中确定aij(i A. i*(i-1)/2+j B. j*(j-1)/2+i C. i*(i+1)/2+j D. j*(j+1)/2+i 3.有一个100*90的稀疏矩阵,非0元素有10个,设每个整型数占2字节,则用三元组表示该矩阵时,所需的字节数是( )。 A. 60 B. 66 C. 18000 D. 33 4.对稀疏矩阵进行压缩存储目的是( )。 A.便于进行矩阵运算 B.便于输入和输出 C.节省存储空间 D.降低运算的时间复杂度 5.广义表((a,b,c,d))的表头是( )。 A. a B.() C.(a,b,c,d) D.(b,c,d) 6.广义表((a,b,c,d))的表尾是( )。 A. a B.() C.(a,b,c,d) D.(b,c,d) 7.设广义表L=((a,b,c)),则L的长度和深度分别为( )。 A. 1和1 B. 1和3 C. 1和2 D. 2和3 8.下面说法不正确的是( )。 A. 广义表的表头总是一个广义表 B. 广义表的表尾总是一个广义表 C. 广义表难以用顺序存储结构 D. 广义表可以是一个多层次的结构 二、判断题 1.从逻辑结构上看,n维数组的每个元素均属于n个向量。( ) 2.稀疏矩阵压缩存储后,必会失去随机存取功能。( ) 3.数组是同类型值的集合。( ) 4.数组可看成线性结构的一种推广,与线性表一样,可以对它进行插入,删除等操作。( ) 5.一个稀疏矩阵Am*n采用三元组形式表示,若把三元组中有关行下标与列下标的值互换,并把m和n的值互换,则就完成了Am*n的转置运算。( ) 6 6.二维以上的数组其实是一种特殊的广义表。( ) 7.若一个广义表的表头为空表,则此广义表亦为空表。( ) 8.广义表中的元素或者是一个不可分割的原子,或者是一个非空的广义表。( ) 9.广义表的同级元素(直属于同一个表中的各元素)具有线性关系。( ) 三、填空题 1.数组的存储结构采用_______存储方式。 2.二维数组a[4][5][6](下标从0开始计,a有4*5*6个元素),每个元素的长度是2,则a[2][3][4]的地址是____。(设a[0][0][0]的地址是1000,数据以行为主方式存储) 3.己知三对角矩阵A【1..9,1..9】的每个元素占2个单元,现将其三条对角线上的元素逐行存储在起始地址为1000的连续的内存单元中,则元素A[7,8]的地址为______。 4.所谓稀疏矩阵指的是_______。 5.当广义表中的每个元素都是原子时,广义表便成了_______。 第6章 树和二叉树 一、选择题 1.已知一算术表达式的中缀形式为 A+B*C-D/E,后缀形式为ABC*+DE/-,其前缀形式为( )A.-A+B*C/DE B. -A+B*CD/E C.-+*ABC/DE D. -+A*BC/DE 2.设树T的度为4,其中度为1,2,3和4的结点个数分别为4,2,1,1 则T中的叶子数为( )A.5 B.6 C.7 D.8 3.在下述结论中,正确的是( ) ①只有一个结点的二叉树的度为0; ②二叉树的度为2; ③二叉树的左右子树可任意交换;④深度为K的完全二叉树的结点个数小于或等于深度相同的满二叉树。 A.①②③ B.②③④ C.②④ D.①④ 4.设森林F对应的二叉树为B,它有m个结点,B的根为p,p的右子树结点个数为n,森林F中第一棵树的结点个数是( ) A.m-n B.m-n-1 C.n+1 D.条件不足,无法确定 5.一棵完全二叉树上有1001个结点,其中叶子结点的个数是( ) A.250 B. 254 C.500 D.501 6.设给定权值总数有n 个,其哈夫曼树的结点总数为( ) A.不确定 B.2n C.2n+1 D.2n-1 7.有关二叉树下列说法正确的是( ) A.二叉树的度为2 B.一棵二叉树的度可以小于2 C.二叉树中至少有一个结点的度为2 D.二叉树中任何一个结点的度都为2 8.二叉树的第I层上最多含有结点数为( ) I I-1I-1I A.2 B. 2-1 C. 2 D.2-1 9.一个具有1025个结点的二叉树的高h为( ) A.11 B.10 C.11至1025之间 D.10至1024之间 10.一棵二叉树高度为h,所有结点的度或为0,或为2,则这棵二叉树最少有( )结点 A.2h B.2h-1 C.2h+1 D.h+1 11.一棵具有 n个结点的完全二叉树的树高度(深度)是( ) nnnn A.?log2?+1 B.log2+1 C.?log2? D.log2-1 12.深度为h的满m叉树的第k层有( )个结点。(1= k-1 kh-1h A.m B.m-1 C.m D.m-1 13.高度为K的二叉树最大的结点数为( )。 7 A.2 B.2 C.2-1 D.2-1 14. 一棵树高为K的完全二叉树至少有( )个结点 kk-1k-1k A.2–1 B. 2–1 C. 2 D. 2 15.将有关二叉树的概念推广到三叉树,则一棵有244个结点的完全三叉树的高度() A.4 B.5 C.6 D.7 16.对二叉树的结点从1开始进行连续编号,要求每个结点的编号大于其左、右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,可采用( )次序的遍历实现编号。 A.先序 B. 中序 C. 后序 D. 从根开始按层次遍历 17.树的后根遍历序列等同于该树对应的二叉树的( ). A. 先序序列 B. 中序序列 C. 后序序列 D从根开始按层次遍历 18.若二叉树采用二叉链表存储结构,要交换其所有分支结点左、右子树的位置,利用( )遍历方法最合适。 A.前序 B.中序 C.后序 D.按层次 19.在下列存储形式中,哪一个不是树的存储形式?( ) A.双亲表示法 B.孩子链表表示法 C.孩子兄弟表示法 D.顺序存储表示法 20.二叉树的先序遍历和中序遍历如下: 先序遍历:EFHIGJK;中序遍历: HFIEJKG 。该二叉树根的右子树的根是: A、 E B、 F C、 G D、 H 21.一棵非空的二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉树一定满足( ) A.所有的结点均无左孩子B.所有的结点均无右孩子C.只有一个叶子结点D.是任意一棵二叉树 22.若X是二叉中序线索树中一个有左孩子的结点,且X不为根,则X的前驱为( ) A.X的双亲 B.X的右子树中最左的结点 C.X的左子树中最右结点 D.X的左子树中最右叶结点 23. 引入二叉线索树的目的是( ) A.加快查找结点的前驱或后继的速度 B.为了能在二叉树中方便的进行插入与删除 C.为了能方便的找到双亲 D.使二叉树的遍历结果唯一 24.n个结点的线索二叉树上含有的线索数为( ) A.2n B.n-l C.n+l D.n 25.下述编码中哪一个不是前缀码( )。 A.(00,01,10,11)B.(0,1,00,11)C.(0,10,110,111)D.(1,01,000,001) 二、判断题 1.二叉树是度为2的有序树。 2.完全二叉树一定存在度为1的结点。 3.二叉树的前序遍历并不能唯一确定这棵树,但是,如果我们还知道该树的根结点是那一个,则可以确定这棵二叉树。 4.由一棵二叉树的前序序列和后序序列可以唯一确定它。 5.完全二叉树中,若一个结点没有左孩子,则它必是树叶。 6.一棵有n个结点的二叉树,从上到下,从左到右用自然数依次给予编号,则编号为i的结点的左儿子的编号为2i(2i 8. 二叉树中每个结点至多有两个子结点,而对一般树则无此限制.因此,二叉树是树的特殊 kk-1kk-1 8
共分享92篇相关文档