早教吧 育儿知识 作业答案 考试题库 百科 知识分享
早教吧考试题库频道 --> 计算机类考试 -->软考中级 -->

请认真阅读以下函数说明、图及C程序,将程序段中(1)~(7)空缺处的语句填写完整。[说明] 一般的树结构

题目

请认真阅读以下函数说明、图及C程序,将程序段中(1)~(7)空缺处的语句填写完整。

[说明]

一般的树结构常采用孩子—兄弟表示法表示,即用二叉链表做树的存储结构,链表中节点的两个链域分别指向该节点的第一个孩子节点和下一个兄弟节点。例如,如图1-15(a)所示树的孩子—兄弟表示如图1-15(b)所示。

函数LevelTraverse()的功能是对给定树进行层序遍历。例如,对如图1-15所示的树进行层序遍历时,节点的访问次序为D B A E F P C。

对树进行层序遍历时使用了队列结构,实现队列基本操作的函数原型如表1-11所示。

Bool、Status类型定义如下:

树的二叉链表节点定义如下:

[C函数程序]

参考答案
正确答案:这是一道要求读者掌握树结构的存储及遍历运算的程序分析题。本试题的解答思路如下。 队列可以保证访问节点时按照层次和自左至右的顺序。借助队列结构对树进行层序遍历时每个节点都进出队列一次节点出队列时进行访问。其过程是首先令树根节点入队若是森林(树根之间互为兄弟)接着则令其余树的根节点入队然后在队列非空的情况下队头节点出队访问该节点同时令其孩子节点入队。以此类推直到队列为空。 在试题所给出的[C函数程序]中代码“InitQueue(&tempQ); (1) ;”完成初始化队列并令根节点入队列的功能因此(1)空缺处所填写的内容是“EnQueue(&tempQ root)”。 采用二叉树存储树结构时其右分支表示兄弟关系因此队头节点出队时应沿右分支将队头节点的所有孩子依次加入队列。(2)空缺处所在的while循环完成处理第一棵树的兄弟节点的功能因此(2)空缺处所填写的内容是“brotherptr=brotherptr->nextbrother”。至此就完成了第一层节点的处理。 (3)空缺处用于判断队列是否为空即应填入“!IsEmpty(tempQ)”或其他等价形式。 使用队列或栈结构存储元素以实现某种运算的基本特点是当队列非空时应令队头元素出队列。因此(4)空缺处所填写的内容是“DeQueue(&tempQ&ptr)”。 若一个节点不存在孩子则其firstchild指针域为空也无须令其孩子节点入队列。因此(5)空缺处所填写的内容是“!ptr->firstchild”或其他等价形式。反之若一个节点有孩子则应首先令其第一个孩子节点入队列然后通过右分支链使其他孩子节点入队列。因此(6)空缺处所填写的内容是“EnQueue(&tempQptr->firstchild)”(7)空缺处所填写的内容是“brotherptr=brotherptr->nextbrother”。
这是一道要求读者掌握树结构的存储及遍历运算的程序分析题。本试题的解答思路如下。 队列可以保证访问节点时按照层次和自左至右的顺序。借助队列结构对树进行层序遍历时,每个节点都进出队列一次,节点出队列时进行访问。其过程是,首先令树根节点入队,若是森林(树根之间互为兄弟),接着则令其余树的根节点入队,然后在队列非空的情况下,队头节点出队,访问该节点同时令其孩子节点入队。以此类推,直到队列为空。 在试题所给出的[C函数程序]中,代码“InitQueue(&tempQ); (1) ;”完成初始化队列并令根节点入队列的功能,因此(1)空缺处所填写的内容是“EnQueue(&tempQ, root)”。 采用二叉树存储树结构时,其右分支表示兄弟关系,因此队头节点出队时,应沿右分支将队头节点的所有孩子依次加入队列。(2)空缺处所在的while循环完成处理第一棵树的兄弟节点的功能,因此,(2)空缺处所填写的内容是“brotherptr=brotherptr->nextbrother”。至此,就完成了第一层节点的处理。 (3)空缺处用于判断队列是否为空,即应填入“!IsEmpty(tempQ)”或其他等价形式。 使用队列或栈结构存储元素以实现某种运算的基本特点是,当队列非空时,应令队头元素出队列。因此(4)空缺处所填写的内容是“DeQueue(&tempQ,&ptr)”。 若一个节点不存在孩子,则其firstchild指针域为空,也无须令其孩子节点入队列。因此,(5)空缺处所填写的内容是“!ptr->firstchild”或其他等价形式。反之,若一个节点有孩子,则应首先令其第一个孩子节点入队列,然后通过右分支链使其他孩子节点入队列。因此,(6)空缺处所填写的内容是“EnQueue(&tempQ,ptr->firstchild)”,(7)空缺处所填写的内容是“brotherptr=brotherptr->nextbrother”。