三、应用题(本大题共5小题,每小题6分,共30分)
29.设一个链栈的输入序列为X,Y,Z,试写出出栈的所有可能的输出序列及其操作步骤。
30.设二叉树的先序遍历序列为DCBAHEIFG,中序遍历序列为ABCHDIEFG,试画出该二叉树并写出后序遍历序列。
31.已知连通带权图如题31图所示,试利用普里姆(Prim)算法,从顶点A出发,构造它的最小生成树,画出构造过程。
32.给定表(28,15,55,3,71,75,10,22,56),试按元素在表中的顺序将它们依次插入一棵初始时为空的二叉排序树,画出插入完成后的二叉排序树。
33.应用直接选择排序算法,对初始关键字序列为48,35,61,98,82,18,29,48的记录进行从小到大排序,写出排序过程和结果。
四、算法设计题(本大题共2小题,每小题7分,共14分)
34.单链表的结点结构定义如下:
typedef struct node
{ int data;
struct node *next;
}Node, *LinkList;
试编写在带头结点的单链表head中查找第1个元素值小于x的结点的实现算法Node *GetLinklist(LinkList head,int x),若找到,则返回指向该结点的指针,否则返回NULL。
35.假设树采用孩子兄弟链表表示法,其结构定义如下:
typedef struct tnode
{ DataType data;
struct tnode *son, *brother;
}*Tree;
试编写算法void leveltree(Tree root)实现树的按层次遍历。