2017年河北工业大学计算机科学与软件学院802数据结构考研冲刺密押题
● 摘要
一、填空题
1. —个字符串中_____称为该串的子串。
【答案】任意个连续的字符组成的子序列
2. 在下面的程序段中,对X 的赋值语句的时间复杂度为_____(表示为n 的函数)。
【答案】1+(1+2)+(1+2+3)+"•+(l +2+... +n )=n(n +1)(n +2)/6,即
【解析】当i=l时,赋值语句就被执行了一次。当i=2时,赋值语句被执行了1+2次。当i=3时,赋值语句被执行了1+2+3次。可以推出赋值语句总共被执行了1+(1+2)+(1+2+3)+…+(l +2+... +n )=n(n +1)(n +2)/6次。
3. 求图的最小生成树有两种算法,_____算法适合于求稀疏图的最小生成树e
【答案】克鲁斯卡尔
【解析】克鲁斯卡尔算法是一种按权值的递增次序选择合适的边来构造最小生成树的方法,这种算法中,采用堆来存放边的集合,适合于边稀疏而顶点较多的图。
4. 在图G 的邻接表表示中,每个顶点邻接表中所含的结点数,对于无向图来说等于该顶点的_____; 对于有向图来说等于该顶点的_____。
【答案】度;出度
5. 检索是为了在文件中寻找满足一定条件的记录而设置的操作。检索可以按_____检索。也可以按_____检索;按_____检索又可以有_____检索和_____检索。
【答案】关键字;记录号;记录号;顺序;直接
6. 用循环链表表示的队列长度为n ,若只设头指针,则出队和入队的时间复杂度分别是_____和_____;若只设尾指针,则出队和入队的时间复杂度分别是_____和_____。
【答案】
【解析】队列的出队操作即删除队头的元素,队列的入队操作即在队尾添加元素,循环链表
只设头指针,出队时,只要把头结点的下一个结点删除就好了,入队时,要把新的结点插入队尾,必须把队列遍历,找到队尾指针,才能插入。循环队列只设尾指针,出队时只要把为指针的下一个结点或者下下个结点删除即可,入队时,只要在尾指针的后面插入新的结点,并更新尾结点即可。
7. 假定有k 个关键字互为同义词,若用线性探测再哈希法把这k 个关键字存入哈希表中,至少要进行_____次探测。
【答案】
【解析】当该关键字发生冲突时,用线性探测不会遇到别的关键字冲突,这个时候需要探测 的次数最小。总次数为
8. 按LSD 进行关键字排序,除最次位关键字之外,对每个关键字进行排序时,只能用_____的排序方法。
【答案】稳定
9. 对于一个具有n 个结点的单链表,在已知的结点半p 后插入一个新结点的时间. 复杂度为_____,在给定值为x 的结点后插入一个新结点的时间复杂度为_____。
【答案】
【解析】第一种情况只需直接修改指针的指向。第二种情况必须从头结点遍历找到x 的结点。
10.对于给定的元素,可以构造出的逻辑结构有_____,_____,_____,_____四种。
【答案】集合;线性结构;树形结构;图状结构(网状结构)
11.顺序查找n 个元素的顺序表,若查找成功,则比较关键字的次数最多为_____次;当使用监视哨时,若查找失败,则比较关键字的次数为_____。
【答案】视哨。
12.
【答案】5
【解析】最多的情况就是把整个表遍历了一遍。使用监视哨时,需要多一个存储空间来存监
=_____
二、选择题
13.一棵哈夫曼树共有215个结点,对其进行哈夫曼编码,共能得到( )个不同的码字。
A.107 B.108 C.214 D.215
【答案】B
【解析】此题可转化为一棵哈夫曼树共有215个结点,共有多少叶子结点。又有以
14.执行完下列语句段后,f 值为( )。
A.2 B.4 C.8
D. 无限递归 【答案】B
所
也就是说若对其进行哈夫曼编码,共能得到108个码字。
【解析】该程序使用了递归调用,由题知,所以结果为4。
15.循环队列存放其元素值,用front 和rear 分别表示队头和队尾,则当前队列中的元素数是( )。
【答案】A
【解析】对于循环队列,需要深刻理解队头在队尾进行进队操作。
和队尾
的概念,在队头进行出队操作,
如果为负则元
可能为正也可能为负,为正时元素个数=
素的个数=所以统一的公式就是
16.若X 是二叉中序线索树中一个有左孩子的结点,且X 不为根,则X 的前驱为( )。
A.X 的双亲
B.X 的右子树中最左的结点 C.X 的左子树中最右的结点 D.X 的左子树中最右的叶结点 【答案】C
【解析】中序线索,只有把其左子树最右结点遍历完后,才会遍历自己,所以X 的前驱为X 的左子树中最右的结点。
17.下列选项中,能缩短程序执行时间的措施是( )。
I. 提高CPU 时钟频率 II. 优化数据通路结构 III. 对程序进行编译优化 A. 仅I 和II B. 仅I 和III C. 仅II 和III