版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计任务书学生姓名: 陈楠 专业班级: 软件zy1202班 指导教师: 夏红霞 工作单位: 计算机科学与技术学院 题 目: 二叉树的建立和中序遍历的演示课程设计要求:1、熟练掌握基本的数据结构;2、熟练掌握各种算法;3、运用高级语言编写质量高、风格好的应用程序。课程设计任务: 1、系统应具备的功能:(1)以二叉链为存储结构,建立二叉树(2)用递归算法和非递归算法实现二叉树的中序遍历(3)二叉树中序遍历的演示2、数据结构设计;3、主要算法设计;4、编程及上机实现;5、撰写课程设计报告,包括:(1)设计题目;(2)摘要和关键字;(3)正文,包括引言、需求分析、数据结构设计、算法设计、程序实现及
2、测试、不足之处、设计体会等;(4)结束语;(5)参考文献。时间安排: 2010年7月5日9日 (第19周)7月5日 查阅资料7月6日 系统设计,数据结构设计,算法设计7月7日 -8日 编程并上机调试7月9日 撰写报告7月10日 验收程序,提交设计报告书。 指导教师签名: 2010年7月4日 系主任(或责任教师)签名: 2010年7月4日 二叉树的建立和中序遍历的演示摘要: 该程序用先序递归的方式建立二叉树,然后采用递归和非递归的方法中序遍历二叉树关键字: 二叉树 中序遍历 递归 非递归一 需求分析: 优化复杂递归,提高程序效率,快速查找,插入删除,实现简单而相当有效的数据压缩算法 ,编译器设计
3、的核心数据结构 。二 算法设计:#include#include#define MAX_STACK 20 /*初始化栈的最大长度*/#define INCREMENT 10 /*每次栈的增量*/typedef int ElemType;#define INT/*-定义数据结构-*/*-定义树的节点-*/typedef struct BiNode ElemType data; struct BiNode *lchild,*rchild; BiNode,*BTNode;/*-定义栈-*/typedef struct Stack int stacksize;/*栈的总长度*/ BTNode base
4、,top;Stack,*BiStack;/*-栈的一些基本操作-*/*-初始化栈*/void InitStack(BiStack stack) stack-base=(BTNode)malloc(sizeof(BiNode)*MAX_STACK); if(!stack-base) printf(1.Memory allocation failed!n); exit(0); stack-top=stack-base; stack-stacksize=MAX_STACK; /*-插入数据元素*/void Push(BiStack stack,BTNode TreeNode) if(stack-to
5、p-stack-base)=stack-stacksize)/*当栈满时重新增加内存*/ stack-stacksize+=INCREMENT; stack-base=(BTNode)realloc(stack-base,sizeof(BiNode)*stack-stacksize); if(!stack-base) printf(2.Memory allocation failed!n); exit(0); stack-top-data=TreeNode-data; stack-top-lchild=TreeNode-lchild; stack-top-rchild=TreeNode-rch
6、ild; +stack-top;/*-删除数据元素*/void Pop(BiStack stack,BTNode *TreeNode) if(stack-top=stack-base) printf(The Stack is Empty!n); return ; *TreeNode=stack-top; -stack-top;/*-判断栈是否为空*/int IsEmpty(Stack stack)/*当栈是空时,返回1,否则返回0*/ if(stack.top=stack.base) return 1; else return 0;/*-创建二叉树-*/void InitTree(BTNode
7、 *bitree) /*初始化二叉树根节点*/ *bitree=NULL; void CreateTree(BTNode *bitree) /*创建二叉树*/*采用先序递归遍历的方式建立二叉树*/ ElemType data; #ifdef INT scanf(%d,&data); if(data=0) #endif #ifdef FLOAT scanf(%f,&data); if(data=0.0) #endif #ifdef CHAR scanf(%c,&data); if(data= )/*当为空格时认为无左或右孩子*/ #endif *bitree=NULL; else *bitree
8、=(BTNode)malloc(sizeof(BiNode); if(!*bitree) printf(4.Memory allocation failed!n); exit(1); (*bitree)-data=data; CreateTree(&(*bitree)-lchild); CreateTree(&(*bitree)-rchild); /*-访问树的节点-*/int print(ElemType data)/*输出树的每个节点的详细信息*/ #ifdef INT printf(%d ,data); /printf(The tree nodes details is :%dn,dat
9、a); #endif #ifdef FLOAT printf(The tree nodes details is :%fn,data); #endif #ifdef CHAR printf(The tree nodes details is :%cn,data); #endif return 1;/*-中序遍历二叉树-*/*递归中序遍历二叉树*/void InorderTraverse(BTNode bitree,int (*Visit)(ElemType data) if(bitree) InorderTraverse(bitree-lchild,Visit); Visit(bitree-d
10、ata); InorderTraverse(bitree-rchild,Visit); /*非递归中序遍历二叉树*/void InorderTraverse1(BTNode bitree,int (*Visit)(ElemType data) BTNode p; Stack stack; InitStack(&stack);/*初始化栈*/ while(p|!IsEmpty(stack) if(p) /*若当前子树非空,则将其根保存并访问左子树*/ Push(&stack,p); p=p-lchild;/*一直找到树的最左边*/ else Pop(&stack,&p); Visit(p-dat
11、a); p=p-rchild; /*-主函数-*/int main(void) BTNode bitree; InitTree(&bitree);/*初始化根节点*/ printf(-整型和浮点型以0表示空,字符以空格表示空-n); printf(Input the tree node data:n); CreateTree(&bitree);/*创建二叉树*/ printf(中序遍历(递归) :n); InorderTraverse(bitree,print);/*递归中序遍历二叉树*/ printf(n); printf(中序遍历(非递归) :n); InorderTraverse(bit
12、ree,print);/*非递归中序遍历二叉树*/ printf(n); return 1;三 程序运行结果:四 不足之处: 虽然程序能正确的运行和输出结果了,但由于时间紧迫,程序设计的时候考虑的不太全面,导致程序设计时较为冗长和繁杂,代码不够优化。而且,手动输入数据比较麻烦,可以改为更为简单的读取文本或数据库的方法来取代手动输入。五 设计体会:经过这些时日的设计,调试与运行,很好的锻炼了我的编程能力,主要是经过对实际问题的编程训练,大大拓宽了我的思路,不再拘泥于书上的一些算法,可以自己总结比较一些其他的算法,对自己编程思想的锻炼起了很大的作用。亦提升了自己对计算机的兴趣,对将来的更深远的学习无疑是有利的。六 结束语: 充分利用前序遍历的特点,就可以生成二叉树。如果把前序换成层序,算法不用改动,若换成后序,只需将
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼儿园食堂保温工作制度
- 气候变化应对法律制度完善与国际合作机制创新研究-基于2024年碳达峰碳中和目标下环境法治建设实证分析
- 基于移动互联网的社区服务互助模式构建分析研究 计算机科学与技术专业
- 文体用品公司工作管理办法
- 肺动脉血栓栓塞的介入治疗总结2026
- 2026年儿童健康管理试卷及答案
- 2026年生物进化论考点解析试卷
- 正压力对石墨超润滑的影响及基于石墨超润滑异质性结构的摩擦学研究
- 止嗽散加味治疗风邪犯肺型喉源性咳嗽的疗效与机制探究
- 2026.4.13 桶装润滑油本森关节码垛机器人
- 并购项目尽职调查清单及风险提示模板
- 脊柱损伤搬运课件
- 2026.01.01施行《招标人主体责任履行指引》
- 下肢静脉血栓诊疗指南
- 金河乳业市场调研汇报及战略建议报告
- 2025年小学生人工智能知识竞赛试卷及参考答案
- 2025海南三亚市纪委监委(市委巡察办)招聘下属事业单位工作人员3人(第1号)笔试考试参考试题及答案解析
- 健美操课教案(2025-2026学年)
- 新解读(2025)《JB-T 9214-2010无损检测 A型脉冲反射式超声检测系统工作性能测试方法》
- 江苏省专升本2025年民族学民族区域自治法试卷(含答案)
- 人工智能通识教程 课件 第7章-自然语言处理
评论
0/150
提交评论