




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数学与计算科学学院实 验 报 告实验项目名称 中序遍历线索化二叉树算法的设计与实现 所属课程名称 数据结构A 实 验 类 型 设计型 实 验 日 期 2014.11.26 班 级 信计1302班 学 号 201353100216 姓 名 危志鹏 成 绩 一、实验概述:【实验目的】1.掌握二叉链表及线索二叉链表的特点及基本运算。【实验原理】/-二叉树的二叉线索存储表示-Typedef enum PointerTagLink,Thread;Typedef struct BiThrNode TElemType data; Struct BiThrNode *lchild, *rchild; PointerTag LTag,RTag;BiThrNode, *BiThrTree;【实验环境】VC+ 6.0二、实验内容:【实验方案】在VC+环境下,编写二叉树的线索链表存储结构,中序遍历二叉线索树T的非递归算法,以及将二叉树T的中序线索化算法,对每个数据元素均调用函数Visit。最后设计主函数,调用以上算法,验证算法的正确性,调试运行,得出结果。【实验过程】(实验步骤、记录、数据、分析)1. 运行VC+ 6.0,建立新的命令文件;2. 将程序输入,如下,发现一个错误。3. 经过查找,发现一个错误,然后改正如下4. 然后进行调试,发现调试出错。【实验结论】(结果)【实验小结】(收获体会)这次实验又出现了和上次一样的错误:程序无错误,但结果不能运行。经过多次的检查终于解决了问题,相信这样的错误不会再有第三次了。三、指导教师评语及成绩:评 语评语等级优良中及格不及格1.实验报告按时完成,字迹清楚,文字叙述流畅,逻辑性强2.实验方案设计合理3.实验过程(实验步骤详细,记录完整,数据合理,分析透彻)4实验结论正确. 成 绩: 指导教师签名: 批阅日期:附录1:源 程 序#include#include#define OK 1#define ERROR 0#define OVERFLOW -2typedef int Status;typedef char TElemType;typedef enum PointerTagLink,Thread; /Link=0:指针,Thread=1:线索typedef struct BiThrNodeTElemType data;struct BiThrNode *lchild,*rchild; /左右孩子指针PointerTag LTag,RTag; /左右标志BiThrNode,*BiThrTree;Status Visit(TElemType e) printf(%c ,e); /输出元素e的值 return OK;Status CreateBiThrTree(BiThrTree &T)/按先序次序输入二叉树中结点的值(一个字符),空格字符表示空数,/构造二叉链表表示的二叉树TTElemType ch;scanf(%c,&ch);if(ch= ) T=NULL;else if(!(T=(BiThrNode *)malloc(sizeof(BiThrNode) exit(OVERFLOW); T-data=ch; /生成根节点 T-LTag=Link; T-RTag=Link; CreateBiThrTree(T-lchild); /构造左子树 CreateBiThrTree(T-rchild); /构造右子树 return OK;/CreateBiThrTreeBiThrTree pre; /pre是全局变量void InThreading(BiThrTree p)if(p)InThreading(p-lchild); /左子树线索化if(!p-lchild)p-LTag=Thread;p-lchild=pre; /前驱线索if(!pre-rchild)pre-RTag=Thread;pre-rchild=p; /后继线索pre=p; /保持pre指向p的前驱InThreading(p-rchild); /右子树线索化/if(p)/InThreading(BiThrTree p)Status InOderThreading(BiThrTree &Thrt,BiThrTree T)/中序遍历二叉树T,并将其中序线索化,Thrt指向头结点BiThrTree pre;if(!(Thrt=(BiThrTree)malloc(sizeof(BiThrNode) ) exit(OVERFLOW);Thrt-LTag=Link;Thrt-RTag=Thread; /建头结点Thrt-rchild=Thrt; /右指针回增if(!T) Thrt-lchild=Thrt; /若二叉树空,则左指针回增elseThrt-lchild=T;pre=Thrt;InThreading(T); /中序遍历进行中序线索化pre-rchild=Thrt;pre-RTag=Thread; /最后一个结点线索化、Thrt-rchild=pre;return OK;/InOrderThreadingStatus InOrderTraverse_Thr(BiThrTree T,Status(*Visit)(TElemType e)/T指向头结点,头结点的左链lchild指向根结点,可参见线索化算法/中序遍历二叉线索树T的非递归算法,对每个数据元素调用函数Visit。BiThrTree p;p=T-lchild; /p指向根结点while(p!=T) /空数或遍历结束时,p=Twhile(p-LTag=Link) p=p-lchild;if(!Visit(p-data) return ERROR; /访问其左子树为空的结点while(p-RTag=Thread & p-rchild!=T)p=p-rchild;Visit(p-data); /访问后继结点p=p-rchild;return OK;/InOrderTraverse_Thrvoid main()BiThrTre
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中风患者康复训练护理查房
- 汉中历年中考数学试卷
- 差班家长会课件教学
- 工笔画基础知识入门课件
- 工程项目管理蔺石柱课件
- 疫情防护知识课件
- 工程质量检测重点课件
- 疫情榜样课件
- 2025版多媒体MG动画制作与版权授权合同
- 疫情小学生课件
- 气候变化背景下沿海城市极端复合洪涝灾害的风险评估
- 动物疫病净化管理制度
- 2025年新疆维吾尔自治区事业单位教师招聘美术学科专业知识试卷
- 北森心理测评试题及答案
- 政府补助专项管理制度
- 大学生心理健康教育试题库及参考答案
- T/CECS 10064-2019绿色建材评价LED照明产品
- DB32/T 3669-2019人民调解委员会建设规范
- 2023 植入式静脉给药装置护理技术中华护理学会团体标准解读
- 直播切片授权协议书
- 药房质量管理试题及答案
评论
0/150
提交评论