《课程设计》-公开·课件设计.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
课程设计 09软件工程一班 指导老师:唐海波 学生姓名:欧建龙 周亮 陈雪冬 1、需求分析 数据结构是计算机、信息管理、信息与计算机科学等信息类专业最重要的专业基础课程,掌握好数据结构的知识将直接关系到后续专业课程的学习。数据结构只要研究四个方面的问题: (1)数据的逻辑结构,即数据之间的逻辑关系; (2)数据的物理结构,即数据在计算机内的存储方式; (3)对数据的加工,即基于某种存储方式的操作算法; (4)算法的分析;即评价算法的优劣。 本实验是用顺序存储结构来存储二叉树并进行一系列的算法,且结点内容的数据类型为字符型。 本程序用VC++6.0编写,可以实现各种二叉树的遍历。包括先序遍历、中序遍历、后序遍历的递归算法,能查找任一结点在某种遍历序列中的前驱和后继以及祖先。 根据题目知,程序主要是根据给定二叉树的先序遍历结果,构造出二叉树并输出按中,后序遍历的结果,以及求二叉树的叶子个数和深度等。其中二叉树的结点用字符表示。 先创建二叉树:按先序次序输入,构造二叉链表表示的二叉树。 设计算法:先序遍历,中序遍历,后序遍历. 在做到层序遍历时,应注意算法如下:根结点入队,队头元素出队,左孩子不为空入队右孩子不为空入队的顺序进行。 其中有求二叉树的深度二叉树的叶子数二叉树的祖先等一些简单的算法 。 设计main()函数调用以上步骤实现相关功能。 2、概要设计 2.1 功能设计 (1)typedef struct BTNode 定义一个用顺序存储结构存储的二叉树,其中包括左孩子和右孩子以及数据元素的内容。和单链表类似,一个二叉链表由头指针唯一确定,若二叉树为空,则头指针指向空。并且结点内容的数据类型为字符型。 (2)CreateBiTree(BiTree T) 此函数的功能是构建二叉树。从键盘上按先序次序输入字符构造二叉链表表示的二叉树T,其中用“#”号表示空树 。 3)NRPreOrder(BiTree bt) 此函数的功能是用非递归的方法实现二叉树的先序遍历算法。调用此函数可以获得二叉树的非递归的先序遍历的结果。 (4)NRInOrder(BiTree bt) 此函数的功能是用非递归的方法实现二叉树的中序遍历算法。调用此函数可以获得二叉树的非递归的中序遍历的结果。 (5)NRPostOrder(BiTree bt) 此函数的功能是用非递归的方法实现二叉树的后序遍历算法。调用此函数可以获得二叉树的非递归的后序遍历的结果。其中bt是要遍历树的根指针,后序遍历要求在遍历完左右子树后,再访问根。需要判断根结点的左右子树是否均遍历过。可采用标记法,结点入栈时,配一个标志tag一同入栈 1:遍历左子树的现场保护, 2:遍历右子树前的现场保护。首先将bt和tag(为1)入栈,遍历左子树;返回后,修改栈顶tag为2,遍历右子树;最后访问根结点。 (6)PreOrderTraverse(BiTree T) 函数功能是用递归的方法对二叉树进行先序遍历,调用此函数可以获得二叉树的递归的先序遍历的结果。 (7)InOrderTraverse(BiTree T) 函数功能是用递归的方法对二叉树进行中序遍历,调用此函数可以获得二叉树的递归的中序遍历的结果。 (8)PostOrderTraverse(BiTree T) 函数功能是用递归的方法对二叉树进行后序遍历,调用此函数可以获得二叉树的递归的后序遍历的结果。 (9)LevelOrderTraverse(BiTree T) 调用此函数可以获得二叉树的层序遍历。 (10)BTDepth(BiTree T) 求二叉树的深度的算法。 (11)Leaf(BiTree T) 求二叉树的叶子数的算法。 (13)main() 主函数用while()与switch(select)语句对二叉树的操作的算法进行了设计。可以实现以上函数的功能,并能退出程序。 2.2 算法流程图 先设计出二叉树的一些算法的函数,如递归遍历、层次遍历等一些算法。然后在主函数中逐一调用。其中,在求任意结点在中序遍历前驱后继算法时利用了递归的中序遍历的算法。 算法流程图如图1所示。 #include iostream using namespace std; #include conio.h #include stdlib.h typedef char ElemType; //结点个数不超过10个 const int MaxLength=10; typedef struct BTNode{ ElemType data; struct BTNode *lchild,*rchild,*parent; }BTNode,* BiTree; BiTree TT=NULL; void CreateBiTree(BiTre

文档评论(0)

沙卡娜 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档