解析第一版,不排除答案、解析(特别是综合题),存在一些错误和问题。一、单项选择题1.C按上三角存储,m7,2对应的是m2,7,在它之前有:第1列:1第2列:2……第6列:6第7列:1前面一共1+2+3+4+5+6+1个元素,共22个元素,数组下标从0开始,故下标为m2,7的数组下标为22。2.D第一个pop栈中状态为a,b,pop出栈元素为b,第二个pop栈中状态为a,c,pop出栈元素为c,第三个pop栈中状态为a,d,e,pop出栈元素为e,把序列连起来就是b,c,e。3.A由于题目明确说明只存储结点数据信息,所以采用顺序存储时要用数组的下标保存结点的父子关系,所以对于这棵二叉树存储的结果就是存储了一棵五层的满二叉树,五层的满二叉树结点个数为1+2+4+8+16=31,所以至少需要31个存储单元。4.C1.森林的先根遍历对应它自己转化后二叉树的先序遍历,森林的后根遍历对应它自己转化后二叉树的中序遍历,所以先根和后根可以唯一确定森林转化后的二叉树,如下:后序遍历为:b,f,e,d,c,aacbdef5.B在4,5,1,2,3中由于1先插入,所以1会成为4的左孩子,2会成为1的右孩子……。6.B首先有直觉这个方式输出的肯定是一个逆序,所以用一个简单的例子测试一下a->b->c,按照题目的遍历方式得到的序列为c,b,a,排除A,C,D,选B下面严谨的论证一下,题目已经限定有向无环图图,假设从a结点出发开始深度遍历,那么这一次递归到最大深度,必然终止于某结点(记为h结点),h结点必然没有出度。此时h输出,程序栈退栈,回到h的前一个结点(记为f),如果f还有其他出度,那么此时要访问其他出度,直到每一个出度的分支都访问结束才能访问f,这样来看,一个结点要被访问的前提必须是他的所有出度分支都要被访问,换句话说也就是等一个结点没有出度时才可以访问,这就是逆拓扑排序(每次删除的都是出度为零的结点)。7.A先将所有边按权值排序,然后依次取权值最小的边但不能在图中形成环,此时取得权值序列为5,6,此时7不能取因为形成了环,接下来去9,10,11,按权值对应的边。8.BA改为权值之和最大的路径,B的最长就是指权值之和最大,C增加关键活动一定会增加工期,D减小一关键活动不一定会缩短工期9.回忆不全III错误,因为堆只要求根大于左右子树,并不要求左右子树有序。10.B11.A直接插入排序在有序数组上的比较次数为n-1,简单选择排序的比较次数为1+2+...+n-1=n(n-1)/2。II,辅助空间都是O(1),没差别,III,因为本身已经有序,移动次数均为0。12.B王道书P13原话“机器字长通常与CPU的寄存器位数、加法器...