《数据结构》试卷(C卷)
一、单项选择题
1. 空串与空格字符组成的串的区别在于( B )。
A.没有区别 B.两串的长度不相等
C.两串的长度相等 D.两串包含的字符不相同
2. 一个子串在包含它的主串中的位置是指( D )。
A.子串的最后那个字符在主串中的位置
B.子串的最后那个字符在主串中首次出现的位置
C.子串的第一个字符在主串中的位置
D.子串的第一个字符在主串中首次出现的位置
3. 下面的说法中,只有(C )是正确的。
A.字符串的长度是指串中包含的字母的个数
B.字符串的长度是指串中包含的不同字符的个数
C.若T包含在S中,则T一定是S的一个子串
D.一个字符串不能说是其自身的一个子串
4. 两个字符串相等的条件是(D )。
A.两串的长度相等
B.两串包含的字符相同
C.两串的长度相等,并且两串包含的字符相同
D.两串的长度相等,并且对应位置上的字符相同
5. 若SUBSTR(S,i,k)表示求S中从第i个字符开始的连续k个字符组成的子串的操作,则对于S=“Beijing&Nanjing”,SUBSTR(S,4,5)=( B )。
A. “ijing” B. “jing&”
C. “ingNa” D. “ing&N”
6. 若INDEX(S,T)表示求T在S中的位置的操作,则对于S=“Beijing&Nanjing”,T=“jing”,INDEX(S,T)=( C )。
A.2 B.3 C.4 D.5
7. 若REPLACE(S,S1,S2)表示用字符串S2替换字符串S中的子串S1的操作,则对于S=“Beijing&Nanjing”,S1=“Beijing”,S2=“Shanghai”,REPLACE(S,S1,S2)=( D )。
A. “Nanjing&Shanghai” B. “Nanjing&Nanjing”
C. “ShanghaiNanjing” D. “Shanghai&Nanjing”
8. 在长度为n的字符串S的第i个位置插入另外一个字符串,i的合法值应该是( C )。
A.i>0 B. i≤n
C.1≤i≤n D.1≤i≤n+1
9. 字符串采用结点大小为1的链表作为其存储结构,是指( D )。
A.链表的长度为1
B.链表中只存放1个字符
C.链表的每个链结点的数据域中不仅只存放了一个字符
D.链表的每个链结点的数据域中只存放了一个字符
10. 在一棵度为3的树中,度为3的结点数为2个,度为2的结点数为1个,度为1的结点数为2个,则度为0的结点数为( C )个。
A. 4 B. 5 C. 6 D. 7
11. 假设在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为( B )个。
A. 15 B. 16 C. 17 D. 47
12. 假定一棵三叉树的结点数为50,则它的最小高度为( C )。
A. 3 B. 4 C. 5 D. 6
13. 在一棵二叉树上第4层的结点数最多为(D )。
A. 2 B. 4 C. 6 D. 8
14. 用顺序存储的方法将完全二叉树中的所有结点逐层存放在数组中],结点R[i]若有左孩子,其左孩子的编号为结点( B )。
A. R[2i+1] B. R[2i] 字符串长度的正确表示C. R[i/2] D. R[2i-1]
15. 由权值分别为3,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为(D )。
A. 24 B. 48 C. 72 D. 53
16. 线索二叉树是一种(C )结构。
A. 逻辑 B. 逻辑和存储 C. 物理 D. 线性
17. 线索二叉树中,结点p没有左子树的充要条件是( B )。
A. p->lc=NULL B. p->ltag=1
C. p->ltag=1 且p->lc=NULL D. 以上都不对
18. 设n , m 为一棵二叉树上的两个结点,在中序遍历序列中n在m前的条件是(B )。
A. n在m右方 B. n在m 左方
C. n是m的祖先 D. n是m的子孙
19. 如果F是由有序树T转换而来的二叉树,那么T中结点的前序就是F中结点的( B )。
A. 中序 B. 前序 C. 后序 D. 层次序
20. 欲实现任意二叉树的后序遍历的非递归算法而不必使用栈,最佳方案是二叉树采用( A )存储结构。
A. 三叉链表 B. 广义表 C. 二叉链表 D. 顺序
21. 下面叙述正确的是( D )。
A. 二叉树是特殊的树
B. 二叉树等价于度为2的树
C. 完全二叉树必为满二叉树
D. 二叉树的左右子树有次序之分
22. 任何一棵二叉树的叶子结点在先序、中序和后序遍历序列中的相对次序( A )。
A. 不发生改变 B. 发生改变
C. 不能确定 D. 以上都不对
二、填空题
1. 计算机软件系统中,有两种处理字符串长度的方法:一种是__固定长度___,第二种是__设置长度指针_____。
2. 两个字符串相等的充要条件是___两个串的长度相等___和___对应位置的字符相等____。
3. 设字符串S1= “ABCDEF”,S2= “PQRS”,则运算S=CONCAT(SUB(S1,2,LEN(S2)),SUB(S1,LEN(S2),2))后的串值为___” BCDEDE”____。
4. 串是指__含n个字符的有限序列(n≥0)__。
5. 空串是指__不含任何字符的串___,空格串是指_仅含空格字符的字符串___。
6. 假定一棵树的广义表表示为A(B(E),C(F(H,I,J),G),D),则该树的度为__3___,树的深度为__4___,终端结点的个数为__6____,单分支结点的个数为___1___,双分支结点的个数为___1___,三分支结点的个数为__2_____,C结点的双亲结点为___A____,其孩子结点为___F____和___G____结点。
7. 设F是一个森林,B是由F转换得到的二叉树,F中有n个非终端结点,则B中右指针域为空的结点有_n+1___个。
8. 对于一个有n个结点的二叉树,当它为一棵___完全___二叉树时具有最小高度,即为__【log2n】+1__,当它为一棵单支树具有___最大____高度,即为___n____。
9. 由带权为3,9,6,2,5的5个叶子结点构成一棵哈夫曼树,则带权路径长度为_55__。
10. 在一棵二叉排序树上按___中序____遍历得到的结点序列是一个有序序列。
11. 对于一棵具有n个结点的二叉树,当进行链接存储时,其二叉链表中的指针域的总数为__2n__个,其中__n-1__个用于链接孩子结点,__n+1__个空闲着。
12. 在一棵二叉树中,度为0的结点个数为n0,度为2的结点个数为n2,则n0=__n2+1__。
13. 一棵深度为k的满二叉树的结点总数为_2k-1__,一棵深度为k的完全二叉树的结点总数的最小值为_2k-1____,最大值为___2k-1___。
14. 由三个结点构成的二叉树,共有__5__种不同的形态。
15. 设高度为h的二叉树中只有度为0和度为2的结点,则此类二叉树中所包含的结点数至少为__2h-1__。
16. 一棵含有n个结点的k叉树,__单支树____形态达到最大深度,_完全二叉树__形态达到最小深度。
三、算法设计题
1. 设有一个长度为s的字符串,其字符顺序存放在一个一维数组的第1至第s个单元中(每个单元存放一个字符)。现要求从此串的第m个字符以后删除长度为t的子串,m<s,t<(s-m),并将删除后的结果复制在该数组的第s单元以后的单元中,试设计此删除算法。
2. 设s和t是表示成单链表的两个串,试编写一个出s中第1个不在t中出现的字符(假定每个结点只存放1个字符)的算法。
解:1、算法描述为:
int delete(r,s,t,m) //从串的第m个字符以后删除长度为t的子串
char r[ ];
int s,t,m;
{ int i,j;
for(i=1;i<=m;i++)
r[s+i]=r[i];
for(j=m+t-i;j<=s;j++)
r[s-t+j]=r[j];
return (1);
} //delete
2、算法思想为:
(1)链表s中取出一个字符;将该字符与单链表t中的字符依次比较;
(2)当t中有与从s中取出的这个字符相等的字符,则从t中取下一个字符重复以上比较;
(3)当t中没有与从s中取出的这个字符相等的字符,则算法结束。
设单链表类型为LinkList;注意,此时类型 LinkList中的data成分为字符类型。
LinkString find(s,t)
LinkString *s, *t;
{ LinkString *ps, *pt;
ps=s;
while(ps!=NULL)
{ pt=t;
while((pt!=NULL)&&(ps->data!=pt->data))
pt=pt->next;
if(pt= =NULL)
ps=NULL;
else
{ ps=ps->next;
s=ps;
}
}
return s;
} //find
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论