电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > DOC文档下载
分享到微信 分享到微博 分享到QQ空间

树与二叉树转换的相关函数库实现数据结构课程设计

  • 资源ID:476193740       资源大小:462.50KB        全文页数:28页
  • 资源格式: DOC        下载积分:20金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要20金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

树与二叉树转换的相关函数库实现数据结构课程设计

河南工程学院数据结构与算法课程设计成果报告树与二叉树转换的相关函数库实现学生学号: 学生姓名: 学 院: 计算机学院 专业班级: 软件工程1341 专业课程: 数据结构与算法指导教师: 2014 年 12 月 29 日题 目树与二叉树转换的相关函数库实现考核项目考核内容得分平时考核(30分)出勤情况、态度、效率;知识掌握情况、基本操作技能、知识应用能力、获取知识能力系统设计(20分)分析系统的功能模块编程调试(20分)实现系统的各个功能模块,并完成调试回答问题(15分)回答老师针对课程设计提出的问题课程设计报告撰写(10分)严格按照规范要求完成课程设计报告源代码(5分)按照规范要求完成课程设计源代码的排版总 评 成 绩指导教师评语: 日期: 年 月 日目 录1 课程设计目标11.1 课程设计目标11.2 课程设计任务11.3 课程设计要求12 分析与设计22.1 题目需求分析22.2 存储结构设计22.3 算法描述32.4 程序流程图42.5 测试程序说明53 程序清单94 测试154.1 测试数据154.2 测试结果分析155 总结17参考文献181 课程设计目标与任务1.1课程设计目标此次课程不仅要从概念上理解树和二叉树,还要从相关应用实际应用中学会运用树特别是二叉树。根据树的相关概念了解树的存储方法和算法及应用以及二叉树的存储方法、遍历、算法和应用。同时在此基础上对树和二叉树的转换的实现进行编程掌握。这次课程设计的目标是通过这次的课程设计,能够使我们在数据结构的选择和应用、算法的设计与实现方面得到训练,加深对数据结构基本内容的理解和灵活应用,同时,在程序设计方法及上机操作方面受到比较系统严格的训练,培养软件工作所需要的动手能力,熟练的掌握数据结构有关知识的应用,加深对数据结构有关知识的理解和应用,进一步提高自己的编程能力,提高自身的动手能力。1.2 课程设计任务设计树与二叉树的相关数据库,以便对树与二叉树的转换的实现进行编程掌握。1.3 课程设计要求利用本学期所学的数据结构的有关知识,实现树与二叉树相互转换,设计树与二叉树转换的相关函数库,以便在程序设计中调用,要求:(1)实现树与二叉树的转换;(2)最好能借助语言环境实现图形显示功能,以便将抽象的数据结构以图形方式显示出来,将复杂的运行过程以动态方式显示出来;(3)给出若干例程,演示通过调用自己所缩写程序来实现相关问题的求解。2 分析与设计2.1 题目需求分析 树型结构是一类重要的非线性数据结构,其中以树与二叉树最为常见。二叉树的每个结点至多只有两颗子树,并且二叉树的子树有左右之分,其次序不能颠倒。由于二叉树与树都可用二叉链表作为存储结构,则以二叉链表作为媒介可导出树与二叉树之间的一个对应关系这个一一对应的关系导致森林或树与二叉树的转换。 2.2 存储结构设计分析树和二叉树的存储结构,二叉树的存储结构如图2.1。图2.1二叉树的存储结构图树是一种非线性的数据结构,树中的元素之间是一对多的层次关系。常用的有三种存储结构,即双亲表示法、孩子表示法、和孩子兄弟表示法。 事实上,一棵树采用孩子兄弟表示法所建立的存储结构与它所对应的二叉树的二叉链表存储结构是完全相同的,只是两个指针域的名称及解释不同而已,通过图直观的表示了树与二叉树之间的对应关系和相互转换方法。图2.2 树和二叉树的转换图2.3 算法描述将树转换为二叉树的步骤如下:1、加线:所有兄弟节点之间加线2、去线:保留树中每个结点与它第一个孩子的连线,删除其与其他孩子的连线3、层次调整:以根结点为轴心,将整棵树旋转,使之层次分明。 图2.3树转化为二叉树的形象图2.4 程序流程图该程序是先建立树,再以树为基础,将树转换成二叉树。该程序的流程是建立树,利用队列,递归,指针等,将树的根结点变为二叉树的根结点,进行树到二叉树的转换,程序的最终目的是根据输入的树的接点,孩子结点及其父亲结点,生成二叉树,将树的先序遍历结果和二叉树的先序遍历的结果输出。图2.4程序流程图2.5 测试程序说明(1)一般树的存储结构有以下几种:双亲结点,孩子结点,孩子兄弟结点。本实验运用到的是双亲结点和孩子兄弟结点。具体存储结构如下typedef struct st1/树结点的类型 char data;/数据域,采用char星 struct st1 *childrenDEGREE;/指向孩子结点的指针域CTreeNode;typedef struct st2 char data;/数据域 struct st2 *lchild,*rchild;/左右孩子结点的指针BTreeNode;(2)点下面的一段程序是树的先序遍历,遍历树的每个结点,即输出该结点的指针域,先遍历下根结点,然后依次遍历孩子结,采用递归算法。void preorderTree(CTreeNode *ctroot) CTreeNode *ctchild; int i; cout<<ctroot->data<<" " for(i=0;i<DEGREE;i+) ctchild=ctroot->childreni; if(ctchild=NULL) break; else preorderTree(ctchild); 此程序即为二叉树的先序遍历,采用递归调用。void Preorder(BTreeNode *T) if(T) cout<<T->data<<" " Preorder(T->lchild); Preorder(T->rchild); (3)CTreeNode *CreateSTree()函数,输入树的结点的数量以及各个结点的数据, 用parentNode=SearchCTree(root,parent)查找指定数据的结点。CTreeNode *CreateSTree() int i,j,k; char data, parent; CTreeNode *root,*parentNode,*node; cout<<"请输入树的结点的数量:" cin>>j; if(j=0) return NULL;/空树,结束函数 cout<<"请输入根结点的数据:" cin>>data; fflush(stdin); root=(CTreeNode *)malloc(sizeof(CTreeNode); root->data=data; for(i=0;i<DEGREE;i+) root->childreni=NULL; for(i=2;i<=j;i+)/依次输入每个结点的信息 cout<<"请输入"<<i<<"个孩子结点的数据及其父亲结点的数据:" cin>>data>>parent; fflush(stdin); node=(CTreeNode *)malloc(sizeof(CTreeNode); node->data=data; for(k=0;k<DEGREE;k+) node->childrenk=NULL; parentNode=SearchCTree(root,parent); for(k=0;k<DEGREE;k+) if(parentNode->childrenk=NULL) parentNode->childrenk=node; break; return root;(4)下面的程序是建立树队列以及二叉树队列的结构体类型,CTreeNode *CTreeArrayMAX_NODE_NUM为结构体指针数组,存放结点的地址,BTreeNode *BTreeArrayMAX_NODE_NUM为结构体指针数组,存放结点的地址。typedef struct nodeCTreeCTreeNode *CTreeArrayMAX_NODE_NUM; int CTreeFront,CTreeRear;QueueCTree;typedef struct nodeBTree BTreeNode *BTreeArrayMAX_NODE_NUM; int BTreeFront,BTreeRear;QueueBTree;(5)下面是将树转换为二叉树的主要程序段,ctroot指向树的根结点,btroot,指向二叉树的根,先初始化队列,然后开辟新的内存空间,以树的根结点作为二叉树的根结点,树的根结点入队,二叉树的根结点入队,树结点出队,二叉树结点出

注意事项

本文(树与二叉树转换的相关函数库实现数据结构课程设计)为本站会员(桔****)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.