信管网每日一练
软件设计师 - 每日一练 导航

软件设计师案例分析每日一练试题(2022/7/18)

2022年07月19日来源:信管网 作者:cnitpm

软件设计师案例分析当天每日一练试题地址:www.cnitpm.com/exam/ExamDayAL.aspx?t1=4

往期软件设计师每日一练试题汇总:www.cnitpm.com/class/27/e4_1.html

软件设计师案例分析每日一练试题(2022/7/18)在线测试:www.cnitpm.com/exam/ExamDayAL.aspx?t1=4&day=2022/7/18

点击查看:更多软件设计师习题与指导

软件设计师案例分析每日一练试题内容(2022/7/18)

试题五
阅读下列说明和C函数代码,将应填入  (n)  处的字句写在的对应栏内。
[说明]
对二叉树进行遍历是二叉树的一个基本运算。遍历是指按某种策略访问二叉树的每个节点,且每个节点仅访问一次的过程。函数InOrder()借助栈实现二叉树的非递归中序遍历运算。
设二叉树采用二叉链表存储,节点类型定义如下:
typedef struct BtNode{
ElemType data;    /*节点的数据域,ElemType的具体定义省略*/
struct BtNode * lchild * rchild;  /*节点的左、右孩子指针域*/
}BtNode,*BTree;
在函数InOrder()中,用栈暂存二叉树中各个节点的指针,并将栈表示为不含头节点的单向链表(简称链栈),其节点类型定义如下:
typedef struct StNode{    /*链栈的节点类型*/
BTree elem;          /*栈中的元素是指向二叉链表节点的指针*/
struct StNode*link;
}StNode;
假设从栈顶到栈底的元素为en、en-1…、e1,则不含头节点的链栈示意图如图5-1所示。

[C函数]
int  InOrder(BTree root)        /*实现二叉树的非递归中序遍历*/
{
BTree ptr;                 /*ptr用于指向二叉树中的节点*/
StNode*q;                  /*q暂存链栈中新创建或待删除的节点指针*/
StNode*stacktop=NULL;      /*初始化空栈的栈顶指针stacktop*/
Ptr=root;                  /*ptr指向二叉树的根节点*/
while (  (1)  | | stacktop !=NULL) {
while (ptr!=NULL)  {
q=(StNode*)malloc(sizeof (StNode));
if  (q= =NULL)
return-1;
q->elem=ptr;
(2)  ;
stacktop=q;            /*stacktop指向新的栈顶*/
ptr=  (3)  ;    /*进入左子树*/
}
q=stacktop;
(4)  ;        /*栈顶元素出栈*/
visit(q);              /*visit是访问节点的函数,其具体定义省略*/
ptr=  (5)  ;    /*进入右子树*/
free(q);               /*释放原栈顶元素的节点空间*/
}
return 0;
}/*Inorder*/



信管网试题答案与解析:www.cnitpm.com/st/245828376.html

信管网考友试题答案分享:

信管网试题答案与解析:www.cnitpm.com/st/245828376.html

温馨提示:因考试政策、内容不断变化与调整,信管网提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

分享至:

信管网 - 信息系统项目管理专业网站

下载APP-在线学习

培训课程

0元畅享

考试题库

免费资料

客服咨询