ZCMU-Data Structure Written Exam(Judgement 1)
Part 1 Other
1、抽象数据类型可用三元式(D,S,P)表示,其中:D是数据对象,S是D上的关系,P是对D的基本操作集。
2、判断带头结点的非空循环单链表(头指针为L)中指针p所指结点是最后一个元素结点的条件是:p->next=L。
3、在单链表p指针所指结点之后插入s结点的操作是:s->next=p->next;p->next=s;
4、对于插入、删除而言,线性表的链式存储优于顺序存储。
5、栈和队列是操作上受限制的线性表,其中栈对数据元素的操作仅限一端进行,即在表尾(栈顶)进行插入或删除,实现后进先出(先进后出)的原则;队列只允许在队尾进行插入、在队头进行删除,实现先进先出原则。
6、二叉树和树相互独立,因此二叉树是一颗结点度最大为二的树是错误的。
7、哈夫曼树结点个数一定是奇数。
8、在二叉树中序遍历序列中,任意一个结点均在其左孩子结点的后面。
9、假设B是一棵树,B’是对应的二叉树。则B的后根遍历相当于B'的中序遍历。
10、通常,二叉树的第i层上有[1,2^i-1]个结点。
11、中序线索二叉树的优点是便于在中序下查找直接前驱结点和直接后继结点。
12、二叉树的先序遍历序列中,任意一个结点均处在其孩子结点的前面。
13、由树结点的先根序列和后根序列可以唯一确定一棵树。
14、邻接多重表只能表示无向图,十字链表可以表示有向图。
15、除去带环图,可以从任意有向图中得到关于所有顶点的拓扑次序。
16、有向图的十字链表是将邻接表和逆邻接表合二为一的链表的表示形式。
17、一个无向图的连通分量是其极大的连通子图。
18、邻接表可以表示有向图,也可以表示无向图。
19、二叉排序树的平均查找长度为O(log n)。
20、折半查找不适用于有序链表的查找(适用于有序、顺序存储结构)。
21、快速排序具有最好的平均性能。
22、在最坏的情况下,堆排序的时间性能是O(n log n),但要比快速排序好。
23、字符串是数据对象特定的线性表。
24、当二叉排序树是一颗平衡二叉树时,其平均查找长度为O(log 2n)。
25、二维数组是其数据元素为线性表的线性表。
Part 2 ZCMU-Midsemester
26、数据的物理结构是指数据在计算机内的实际存储形式。
27、通常使用循环队列来管理键盘的缓冲区。
28、循环队列也存在空间溢出问题。
29、数据元素是数据的基本单位。
30、顺序存储的线性表可以随机存储。
31、串既可以顺序存储,也可以链式存储。
Part 3 ZCMU-Tree and Search
32、二叉树是度为2的有序树。
33、先序遍历和后序遍历不能确定一颗二叉树,因为:前序和后序在本质上都是将父节点与子结点进行分离,但并没有指明左子树和右子树的能力,因此得到这两个序列只能明确父子关系,而不能确定一个二叉树。
由二叉树的中序和前序遍历序列可以唯一确定一棵二叉树 ,由前序和后序遍历则不能唯一确定一棵二叉树。
由二叉树的中序和后序遍历序列可以唯一确定一棵二叉树,由前序和后序遍历则不能唯一确定一棵二叉树。
34、中序遍历一颗二叉排序树的结点就可得到排好序的结点序列。
35、哈夫曼树是带权路径长度最短的树,路径上权值较大的结点离根较近。
36、《数据结构 严蔚敏》P196-197,由于分块查找的平均查找长度不仅和表长n有关,且和每一块中的记录数s有关,因此:当s取SQRT(n),ASL取最小值SQRT(n)+1,这个值远不及折半查找,因此试题判断题8错误。
37、试题9有个陷阱,新结点的确是插在叶子结点下面,但是必须是查找不成功时查找路径上访问的最后一个结点的左孩子或右孩子结点。
Part 4 ZCMU-Chart,Sort and Hash Function
39、树中的结点和图中的顶点指数据结构中的数据元素。
40、在n个结点的无向图中,若该图是连通图,则其边数大于等于n-1;在n个结点的无向图中,若边数大于(n-2)(n-1)/2,则该图必是连通图。
41、无向图的邻接矩阵一定是对称的。因为如果一个点i到j有边,则a[ij]=a[ji]=1;所以都是对称的。但是有向图就不一定了,点i 到j有边,a[ij]=1,但j到i不一定有边,则aji不一定等于1。
42、试题5:逆邻接表的作用是为了方便计算入度.有向图每条弧对应唯一的弧头和弧尾。逆邻接表只是把邻接表中弧头和弧尾的次序换了,并不是一种新表,它和邻接表的唯一区别就是弧尾的nextarc指针指向弧头而已.所以节点数是相等的。
43、试题6:使用栈。
44、《数据结构 严蔚敏》P164 广度优先搜索尽可能进行横向搜索,设x和y是两个相继被访问过的顶点,若当前是以x为出发点进行搜索,则在访问x的所有未曾被访问过的邻接点之后,紧接着是以y为出发点进行横向搜索,并对搜索到的y的邻接点中尚未被访问的顶点进行访问。
45、最小代价生成树不是唯一的。
46、连通图上各边权值均不相同,则该图的最小生成树是唯一的。
47、试题11:若图中有环,则不能使用拓扑排序算法排成有序序列。
48、试题12:有向图和无向图,带权与有环与否,都可以进行拓扑排序。拓扑排序只是检测图中是否存在环的手段之一,因此,不存在什么图不能拓扑排序的问题。但是不能排成有序序列!
49、若有向无环图的拓扑排序序列唯一,则可以确定唯一的图。
50、试题14:如果有两条关键路径或者两个关键活动并行,单独缩短一个没有用的,不过反过来倒是对的,延期某个关键活动,整个工程的时间必定延期。(即试题15)
51、采用线性探测法处理散列时的冲突,当从哈希表删除一个记录时,不应将这个记录的所在位置置空,因为这会影响以后的查找。
52、在散列检索中,“比较”操作一般也是不可避免的。
53、试题18错的太明显= =。
54、假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的。
Eg.
对于如下冒泡排序算法,原本是稳定的排序算法,如果将记录交换的条件改成r[j]>=r[j+1],则两个相等的记录就会交换位置,从而变成不稳定的算法。
void BubbleSort(int r[ ], int n)
{
exchange=n; //第一趟冒泡排序的范围是r[1]到r[n]
while (exchange) //仅当上一趟排序有记录交换才进行本趟排序
{
bound=exchange; exchange=0;
for (j=1; j if (r[j]>r[j+1])
{
r[j]←→r[j+1];
exchange=j; //记录每一次发生记录交换的位置
}
}
}
堆排序、快速排序、希尔排序、直接选择排序不是稳定的排序算法,而基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序是稳定的排序算法。
55、试题20:堆是二叉树,但不保证是平衡二叉树,因为堆中左右子树的高度差并不保证小于等于1。
56、有关Heap和Tree 可以见:http://blog.csdn.net/jinzhao1993/article/details/51278426。
57、试题22:对于一个已经排好序的序列,直接插入排序的复杂度是O(n),而归并排序的复杂度是O(nlogn)。这时候归并排序就不比直接插入排序速度快了。