第一题:
解析:q指针指向要被删除的元素,当这个元素是链表中唯一一个元素时,q指针和尾指针都指向同一个元素,那么在删除掉这个元素之前,需要将尾指针调整到指向头指针的位置,此时链表为空,头指针h=尾指针p。
答案选D。
第二题:
解析:
选项A:1入队---2从右边入队---3从左边入队---4从左边入队---5从左边入队,然后都从左边出队得到出队序列是5,4,3,1,2,A正确。
选项B:1入队---2从右边入队---3从左边入队---4从右边入队---5从左边入队,然后都从左边出队得到出队序列是5,3,1,2,4,B正确。
选项C:1入队---2从左边入队---3从右边入队---4从左边入队---5从右边入队,然后都从左边出队得到出队序列是4,2,1,3,5,C正确。
选项D:1入队---2无论从哪边入队都不可能形成41325的队列,因为1,2挨着入队,1,2在队列中应该是挨着的。D错误
答案选D。
第三题:
解析:
假设该二维数组一行有n个元素,那从A[0][0]到A[3][3]一共增加了3n+3个元素,
3n+3=220-100=120(地址增量),解得n = 39,一行有39个元素,从A[0][0]到A[5][5]一共增加了5n+5个元素 5*39+5=200,地址增量是200,那么A[5][5]的存储地址就是:200+100=300
答案选B。
第四题:
解析:
我们说对于一个二叉树而言,知道它的先序序列(或者是后序序列)和中序序列就能确定这个二叉树的形态:
森林转二叉树时,遵循左孩子右兄弟的原则,将连续两颗右子树的连线去除,我们可以得到三颗树。
答案选C。
第五题:
解析:
第一步:画出哈夫曼树。
第二步:计算权值:30*2+16*2+21*2+10*3+12*3 = 200
答案选B。
第六题:
解析:经过分析可知:23插到25的左子树上,经过判断失衡发生在根结点的右子树的左子树上,所以这是一个RL型的失衡。
这里可以使用传统方法,也可以使用简单方法,这里介绍一下简单方法:
直接找到20,30,25的中间结点25作为根结点,20<25<30,20作为左子树,30作为右子树直接构造出来,
16还是按照原来接在20的左子树上,30还是按照原来接在30的右子树上,最后23直接正常接上去就行。很简单。
答案选D。
第七题:
解析:拓扑排序是依次找入度为0的点,并去掉这个点以及与之相连的连线。
首先是A,A除去后出现B这个入度为0的点。
A-B:出现C入度为0,选择C,
A-B-C:出现D入度为0,选择D,
A-B-C-D:出现E入度为0,选择E,
A-B-C-D-E:出现F入度为0,选择F,
A-B-C-D-E-F
只有A-B-C-D-E-F这一条序列。
答案选A。
第八题:
解析:根据迪杰斯特拉算法正常演算即可,
答案选C。
第九题:
解析:
在这个B树中,根结点钟的关键字个数最多是3-1=2个,除叶子结点以外的非根节点中的关键字个数最多是3-1=2个,最少是3/2向上取整-1=1个,如果根结点是2个关键字,那么第二层就会有3个结点,而第二层只有4个关键字,则说明有2个关键字个数为1的结点和一个关键字个数为2的结点,对于关键字个数为1的结点可以分出两个子树出来,对于关键字个数为2的结点可以分出三个子树出来,那么这样一算第三层有7个结点,第二层有三个结点,加上根结点
一共是11个结点。
答案选A。
第十题:
解析:
先分配:
再连接:
,可以看到372之前是301,之后是892。
答案选C。
第十一题:
解析:插入大根堆后调整的过程称为上刀山,将左右两个节点与根结点进行比较,最大的和根结点交换位置,依次进行调整,我们可以得到最终的H是:9875614
答案选B。