首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
请认真阅读以下函数说明、图及C程序,将程序段中(1)~(7)空缺处的语句填写完整。 【说明】 一般的树结构常采用孩子一兄弟表示法表示,即用二叉链表代表树的存储结构,链表中节点的两个链域分别指向该节点的第一个孩子节点和下一个兄弟节点,例如,如图
请认真阅读以下函数说明、图及C程序,将程序段中(1)~(7)空缺处的语句填写完整。 【说明】 一般的树结构常采用孩子一兄弟表示法表示,即用二叉链表代表树的存储结构,链表中节点的两个链域分别指向该节点的第一个孩子节点和下一个兄弟节点,例如,如图
admin
2009-02-15
77
问题
请认真阅读以下函数说明、图及C程序,将程序段中(1)~(7)空缺处的语句填写完整。
【说明】
一般的树结构常采用孩子一兄弟表示法表示,即用二叉链表代表树的存储结构,链表中节点的两个链域分别指向该节点的第一个孩子节点和下一个兄弟节点,例如,如图5-9(a)所示的树和如图5-9(b)所示的树的孩子一兄弟表示。
函数LevelTraverse()的功能是对给定树进行层序遍历。例如,对如图5-9所示的树进行层序遍历时,节点的访问次序为DBAEFPC。
对树进行层序遍历时使用了队列结构,实现队列基本操作的函数原型如表5-12所示。
Bool、Status类型定义如下:
typedef enum{FALSE=0, TRUE=1}Bool;
typedef enum{OVERFLOW=-2, UNDERFLOW=-1, ERROR=0, OK=1)Status;
树的二叉链表节点定义如下:
typedef struct N6de{
char data;
struct Node *firstchild, *nextbrother;
}Node, *TreeNode;
【C函数程序】
Status LevelTraverse(TreeNode root){
/*层序遍历树,树采用孩子一兄弟表示法,root是树根节点的指针*/
Queue tempQ;
TreeNode ptr, brotherptr;
if(!root)
return ERROR;
InitQueue(&tempQ);
(1);
brotherptr=root->nextbrother;
while(brotherptr)(EnQueue(&tempQ, brotherptr);
(2);
} /*end-while*/
while( (3) ){
(4);
Printf("%c\t", ptr->data);
if( (5) ) continue;
(6);
brotherptr=ptr->firstchiid->nextbrother;
while(brotherptr){
EnQueue(&tempQ, brotherptr);
(7);
} /*end-while*/
}/*end-while*/
return OK;
} /*LevelTraverse*/
选项
答案
(1)EnQueue(&tempQ,root) (2)brotherptr=brotherptr->nextbrother (3)!IsEmpty(tempQ),或其等价形式 (4)DeQueue(&tempQ,&ptr) (5)!ptr->firstchild,或其等价形式 (6)EnQueue(&tempQ,ptr->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”。
转载请注明原文地址:https://www.kaotiyun.com/show/oIjZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
许多企业常把大量暂时不用的过期数据分类归档转存于(8)________________中。
在WPS文字中,由“字体”“字号”“粗体”“斜体”“两端对齐”等按钮组成的工具栏是________________。
在Excel2010中,设A1单元格中的值为20,A2单元格中的值为60,若在C1单元格中输入函数“=AVERAGE(A1,A2)”,按回车键后,,则C1单元格中的值为(
下列关于Windows7屏幕保护程序的叙述中,不正确的是__________。
西部某省考试机构工作人员统计了去年下半年三个地区四种资格的报考人数,将统计表抄录如下(其中有一个数据抄错了): 信息处理技术员小王很快就找出了错误的数据,并进行了纠正。错误的数据是(32),该数据应纠正为(33)。33.
在统计学中,用来衡量一个样本中各个数据波动大小的量是______。
删除Windows中某个应用程序的快捷方式,意味着(39)。
计算机病毒是一段程序,一般隐藏在______中。
在Excel中,若单元格C5=1000、D5=50、C6=6000、D6=40,在单元格E5中输入公式“=C5*$D$5”,再将此公式复制到F6单元格中,则F6单元格的值为(54)。
从网络连接的角度来看,代理服务器承担了何种网络设备的功能?请给出下列代理服务器上的外网卡配置参数(配置界面如图2所示)。子网掩码:(1);默认网关:(2)。
随机试题
某市公安局经市规划局批准,在居民区旁盖一栋高大的办公楼,由于距离过近,致使大批居民的住宅无法采光。于是居民将城市规划局诉至法院。法院经审查认为规划局的批准行为违法。此时法院应如何处理()。
可以给定某列初始值的关键字是_________。
对于气道阻力的说法,恰当的有
药性平和,无论寒热虚实之肝风内动皆可应用,并能祛风湿,止痹痛的药物是
A.溶散时限B.融变时限C.溶化性D.不检查E.崩解时限包衣滴丸的质量检查项目为()。
封闭式基金每()公布资产净值。
开展心理咨询的前提条件是良好的()。
让.雅克.卢梭(1712—1778)是在启蒙运动后期涌现出来的伟大思想家。他构思20年,写作3年,完成了教育巨著《爱弥尔》,提出了较为系统的自然教育理论。从根本上否定了封建宗教教育,在世界教育史上具有划时代的伟大意义。卢梭很重视体育,在《爱弥尔》中,从婴儿
Countriesborderedbytheseahaveapleasant______climatebecausetheseawarmsthecoastinwinterandcoolsitinsummer.
简述社会本位论的基本观点。
最新回复
(
0
)