1、 数据结构课程设计报告数据结构课程设计报告 设计名称设计名称 主函数和层次建立二叉树 专专 业业 信息与计算科学 年年 级级 11 级 组组 长长 学学 号号 组组 员员 目 录 一、设计题目. 1 二、运行环境. 1 三、设计思想. 1 四、流程图 1 五、算法设计分析 1 六、运行结果分析 3 七、学习总结. 6 八、源代码 6 主函数代码 . 6 层次建立二叉树代码 . 8 1 一、一、设计题目设计题目 主函数设计和层次建立二叉树 二、二、运行环境运行环境 VC+6.0 三、设计思想三、设计思想 主函数设计 由于程序的功能进行的了模块化设计,分别由各小组完成,所以 主函数的设计是对所有模
2、块的调用以实现函数的各种功能, 进而完成 程序的功能实现。 各个功能模块是并列关系,就用 switch 分支结构实现对功能函 数的平行调用。 为了使操作者清楚自己的指令所实现的功能, 所以设计了一个主 界面来介绍模块功能和对应的操作指令。 四、流程图四、流程图 略(本小组负责设计主函数故流程图省略) 。 五、算法设计分析五、算法设计分析 我们小组选用层次建立法建立二叉树, 操作时按层次直接输入即可, 不需要将元素进行先序 2 或中序或后序处理。 为了实现二叉树的层次输入建立而采用队列作为二叉树的存储结构。 另 外,还选用了结构体等数据结构。 具体数据结构介绍如下: 二叉树结点结构体: type
3、def struct Binnode char data; struct Binnode *lchild; struct Binnode *rchild; ; 该结构体包含数据域(储存结点信息)和指针域(储存结点的左右孩子结点的指针) 。 二叉树结点队列: typedef struct queue Bintree data30; int front; int rear; ; 该结构体包含一个 Bintree 类型的数组,其内储存结点信息。 层次建立二叉树的算法设计如下: Bintree Level_Creat() Bintree root,p,s; queue node; node.front
4、=node.rear=0; char ch; ch=getchar(); if(ch= root=(Binnode*)malloc(sizeof(Binnode); /生成根结点 root-data=ch; node.datanode.rear+=root; /用队列实现层次遍历 while(node.frontdata=ch; p-lchild=s; node.datanode.rear+=s; 3 else p-lchild=NULL; ch=getchar(); if(ch!= s-data=ch; p-rchild=s; node.datanode.rear+=s; else p-rc
5、hild=NULL; return root; 六、六、运行结果分析运行结果分析 主界面主界面运行结果分析运行结果分析 输入任意键进入选项操作界面 4 输入 112 实现所选操作 5 层次建立二叉树运行结果分析:层次建立二叉树运行结果分析: 进行输入操作时要注意程序终止条件,由于我们小组采用的是层次建立,所以结束条 件为当二叉树的地所有叶子结点的左右孩子指针域为空时程序结束: 简单举例: 输入 ABC 七、学习总结七、学习总结 我们学习小组在做这次课程设计的时候我们很团结 作为组长的我, 把我们每个人的 任务都部署的很详细 每个人都应该做些什么, , 我们分工明确 配合融洽 互相帮助 一起探讨
6、整个课程设计的中心思想.通过这次课程设计,我们发现,对于所学的知识,我们 掌握的不是很好,我们需要将知识理解透彻,不应该只学习表面的浅层的知识, 我们觉得我 们这次的课程设计完成的不是很好,我们组的成员应该好好思考一下,找到我们的不足,为 下一次的课程设计做一个完美的铺垫。我们会继续改进,继续努力的.还有通过这次课程设 计 我们不但使同学关系更加和谐 而且还能增进我们之间的团队意识 我觉得这是一项很 好的活动.。我建议老师以后能多多给我们这样的机会,来培养我们的一些能力!总之通过这 项活动 。我们虽说面对大的程序有些不知所措 但是我们总体来说还是很开心的! 。 八、源代码八、源代码 主函数代码主函数代码 7 #include #include #include/清屏函数头文件 void jiemie1() s