




免费预览已结束,剩余8页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本科学生综合性实验报告学 院: 软件与通信工程学院 课程名称: 数据结构与算法 专业班级: 09通信工程1班 姓 名: 王燕 学 号: 0093731 学生实验报告(2)学生姓名王燕学号0093731同组人实验项目二叉树的建立和遍历必修 选修 演示性实验 验证性实验 操作性实验 综合性实验实验地点H113实验仪器台号指导教师蒋娜实验日期及节次周五8、9、A节一、实验目的1进一步掌握树的结构及非线性特点,递归特点。2进一步巩固对指针的使用,编写二叉树的创建和遍历基本操作的实现程序。二、实验内容建立一棵二叉树,并对其进行遍历(先序、中序、后序),打印输出遍历结果。实验说明 从键盘接受输入(先序),以二叉链表作为存储结构,建立二叉树(以先序来建立),并采用递归算法对其进行遍历(先序、中序、后序),将遍历结果打印输出。测试数据ABC*DE*G*F*(其中*表示空格字符)则输出结果为 先序:ABCDEGF中序:CBEGDFA后序:CGBFDBA拓展要求采用非递归算法实现二叉树遍历。三、实验要求1用C+/C完成算法设计和程序设计并上机调试通过。2. 实验过程中学生调试完成,需向教师演示实验过程和结果。3撰写实验报告,提供实验结果和数据。4分析算法,要求给出具体的算法分析结果,包括时间复杂度和空间复杂度,并简要给出算法设计小结和心得。5. 采用上机情况、程序质量、实习报告相结合的形式,满分为100分。四、实验仪器1. WindowsXP以上操作系统;2. Visual C+6.0语言环境;3. 每人一台PC机。五、实验内容和步骤1启动Windows XP操作系统打开计算机,启动Windows XP操作系统。2创建工作文件夹创建Visual C+ 6.0的工作文件夹。3启动Visual C+ 6.0建立一个空工程BiTree,在建立一个源文件bitree4.编写代码如下:#include#include#include#define MAX 50typedef struct Nodechar data;struct Node * LChild;struct Node * RChild;BiTNode, * BiTree;/建立二叉链表BiTNode *BiT_Create(char s ,int *pi)BiTNode *root;char ch;ch=s*pi;(*pi)+;if(ch=*) return NULL;root=(BiTNode*)malloc(sizeof(BiTNode);root-data=ch;root-LChild=BiT_Create(s,pi);root-RChild=BiT_Create(s,pi);return(root);/前序递归遍历void PreOrder(BiTree root)if(root!=NULL)printf(%c,root-data);PreOrder(root-LChild);PreOrder(root-RChild);/中序递归遍历void InOrder(BiTree root)if(root!=NULL)InOrder(root-LChild);printf(%c,root-data);InOrder(root-RChild);/后序递归遍历void PostOrder(BiTree root)if(root!=NULL)PostOrder(root-LChild);PostOrder(root-RChild);printf(%c,root-data);/前序非递归遍历二叉树void BiT_PreOrder(BiTNode *root)BiTNode *p,*nodeMAX;int top=0;p=root;dowhile(p!=NULL)if(p-data!=*) printf(%c,p-data);nodetop=p;top+;p=p-LChild;if(top0)top-;p=nodetop;p=p-RChild;while(top0 | p!=NULL);/中序非递归遍历二叉树void BiT_InOrder(BiTNode *root)BiTNode *p,*nodeMAX;int top=0;p=root;dowhile(p!=NULL)nodetop=p;top+;p=p-LChild;if(top0)top-;p=nodetop;printf(%c,p-data);p=p-RChild;while(top0 | p!=NULL);/后序非递归遍历二叉树void BiT_PostOrder(BiTNode *root)BiTNode *p,*nodeMAX;int top,flagMAX; top=0;p=root;dowhile(p!=NULL)nodetop=p;flagtop=0;top+;p=p-LChild;while(top0 & flagtop-1=1)top-;p=nodetop;printf(%c,p-data);if(top0)p=nodetop-1;flagtop-1=1;p=p-RChild;while(top0 );void Display(char str)printf(当前链表信息为:n%sn,str);void main( )char str30;BiTNode *root;int k=1,flag;while(k)int i=0;printf(nnttt二叉树的建立与遍历nn);printf(ttt1.先序建立二叉链表n);printf(ttt2.先序遍历二叉树n);printf(ttt3.中序遍历二叉树n);printf(ttt4.后序遍历二叉树n);printf(ttt5.显示二叉链表信息n);printf(ttt0.退出n); printf(请选择操作项目:);scanf(%d,&k);system(cls);switch(k)case 1:printf(请输入要建立的信息(*代表结点为空):n); scanf(%s,str);root=BiT_Create(str,&i);system(pause); break;case 2:printf(请输入遍历方式( 0 代表递归遍历,1代表非递归遍历):);scanf(%d,&flag);switch(flag)case 0: printf(先序递归遍历结果为:n); PreOrder(root); printf(n); system(pause); break;case 1: printf(先序非递归遍历结果为:n); BiT_PreOrder(root); printf(n); system(pause); break;case 3:printf(请输入遍历方式( 0 代表递归遍历,1代表非递归遍历):);scanf(%d,&flag);switch(flag)case 0: printf(中序递归遍历结果为:n); InOrder(root); printf(n); system(pause); break;case 1: printf(中序非递归遍历结果为:n); BiT_InOrder(root); printf(n); system(pause); break;case 4:printf(请输入遍历方式( 0 代表递归遍历,1代表非递归遍历):);scanf(%d,&flag);switch(flag)case 0: printf(后序递归遍历结果为:n); PostOrder(root); printf(n); system(pause); break;case 1: printf(后序非递归遍历结果为:n); BiT_PostOrder(root); printf(n); system(pause);break;case 5:Display(str);system(pause);break;case 0:break;default :printf(选择出错,请重新选择操作项目!n);system(pause);system(cls);5.编译、运行,结果如下:开始界面:建立一个二叉链表:显示当前二叉链表的信息:先序递归遍历二叉树:先序非递归遍历二叉树:中序递归遍历二叉树:中序序非递归遍历二叉树:后序递归遍历二叉树:后序非递归遍历二叉树:下面为重新建立二叉链表(也即更新二叉链表)后的操作信息:选择退出后的页面:四、结论1、实验结果 实现了以先序建立二叉链表以及按先序、中序、后序遍历二叉树的操作。其中先序、中序、后序遍历二叉树操作都包括递归和非递归方式。2、分析讨论 我的编程要求是全面、界面友好、具有主动输入选择权,为了界面友好我使用了分支选择函数switch()以及清屏函数system(“cls”)。并且该实验完全是自己编出来的。“先序建立一个二叉链表”选项既是建
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届江西省上饶市名校化学九上期中教学质量检测模拟试题含解析
- 2026届四川省江油市七校九年级化学第一学期期中教学质量检测模拟试题含解析
- 重庆南开(融侨)中学2026届九年级化学第一学期期中考试试题含解析
- 河北省衡水市安平中学高一年级学情检测英语学科试题(含答案无听力原文及音频)
- 2026届河北省临西县九年级英语第一学期期末调研模拟试题含解析
- 导游证书考试题库及答案
- 2026届陕西省西安市师大附中化学九上期末质量检测模拟试题含解析
- 上海新云台中学2026届九上化学期中达标检测试题含解析
- 衡阳市重点中学2026届九年级化学第一学期期中复习检测试题含解析
- 劳动合同范本委托保管档案协议6篇
- 人工气道气囊压力监测
- 外科品管圈提高外科腹部手术后早期下床的执行率课件
- 消毒记录登记表14079
- 东芝电梯CV180故障诊断
- GB/T 31186.1-2014银行客户基本信息描述规范第1部分:描述模型
- 生物质资源及其开发利用课件
- 调查研究方法与调研报告写作讲义课件
- 卡西欧PROTREKPRW-6000使用手册
- 关于开具无犯罪记录证明的函(模板)
- 初中综合实践课程
- 大金D型水冷螺杆机说明书
评论
0/150
提交评论