ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:19.52KB ,
资源ID:4631776      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4631776.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(设计出树结构的相关函数库以便在程序设计中调用可编辑doc.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

设计出树结构的相关函数库以便在程序设计中调用可编辑doc.docx

1、设计出树结构的相关函数库以便在程序设计中调用可编辑doc数据结构课程设计报告学院专业班级学号学生姓名*指导教师课程成绩 完成日期2013年7月12日课程设计成绩评定学院 城南学院专业计算机科学与技术班级学号学生姓名 指导教师 完成日期2013年7月12日指导教师对学生在课程设计中的评价评分项目优良中及格不及格课程设计屮的创造性成果学生掌握课程内容的程度课程设计完成情况课程设计动手能力文字表达学习态度规范要求课程设计论文的质量指导教师对课程设计的评定意见综合成绩指导教师签字2013年7月12日课程设计任务书学院专业课程名称 数据结构课程设计 时间 20122013学年第二学期1旷20周学生姓名

2、指导老师题目 设计出树结构的相关函数库,以便在程序设计中调用主要内容:使用Microsoft Visual C+ 6. 0设计二叉链表结构的相关函数 库,以便在程序设计中调用设计二叉链表结构的相关函数库,在程序设计中调用, 并实现二叉树的各种基木函数以及常用函数。要求:(1)包括树结构的存储结构及各种基本函数以及常用函数(自己确定函 数、函数形式及理由)。(2)最好能借助语言环境实现图形显示功能,以便能将抽 彖的数据结构以图形方式显示出来,将复杂的运行过程以动态方式显示出来。(3)给出若干例程,演示通过调用自己的库函数来实现相关问题的求解。应当提交的文件:(1) 课程设计学年论文。(2) 课程

3、设计附件(主要是源程序)。设计出树结构的相关函数库,以便在 程序设计中调用学生姓名:指导老师:摘 要 作为用户我们极少接触系统调用,但是我们熟悉C语言,对库函数 的调用并不陌生。C语言支持一系列库函数的调用,而事实上,库函数的调用是C 语言在较高层次上调用的一种方式,函数调用是操作系统内核提供给程序员的程 序设计界而,它们是内核提供给用户调用的函数。使用Microsoft Visual C+ 6. 0 设计二叉链表结构的相关函数库,操作系统通过执行main函数开始运行一个C 程序。main函数可以调用C程序屮的其他函数來完成程序的任务,其他函数也可 以互相调用,但其他函数(非main函数)不能

4、调用main函数(main函数只能由操作系统来调用)。关键词 设计函数库;C程序的执行;C程序的调用;C语言;VC+60 目录1引言 11.1课程设计目的11.2课程设计要求12问题的描述22.1问题的模型化描述23数据结构33. 1定义二叉树结点类型34模块划分34. 1入队34.2队列判空34.3出队44. 4根据先序递归建立二叉树44. 5递归遍历输出函数44. 6层次遍历输出算法54. 7求二叉树深度得算法54. 8求二叉树叶子结点数的算法 55运行程序 66结束语8附录:源程序代码91引言Visual C+6.0由许多织件组成,包括编辑器、调试器以及程序向导 AppWizardx类向

5、导Class Wizard等开发工具。编译就是把高级语言变成计算机 可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2 进制的。编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法 分析;语法分析;语义检查和中间代码生成;代码优化;目标代码生成。主要是进行 词法分析和语法分析,又称为源程序分析,分析过程中发现有语法错误,给出提示 信息。将编译产生的obj文件和系统库连接装配成一个可以执行的程序。由于 在实际操作中可以直接点击Bidld从源程序产生可执行程序,将源程序翻译成可 执行文件的过程分为编译和链接两个独立的步骤,Z所以这样做,主要是因为:在 一个较大的复杂

6、项目中,有很多人共同完成一个项目每个人可能承担其中一部分 模块,其中有的模块可能是用汇编语言写的,有的模块可能是用VC写的,有的模 块可能是用VB写的,有的模块可能是购买不是源程序模块而是目标代码或已有 的标准库模块,因此,各类源程序都需要先各自编译成目标程序文件,再通过链接 程序将这些目标程序文件连接装配成可执行文件,再调用函数或运行可执行程序 文件。1.1课程设计目的(1) 使用Microsoft Visual C+6. 0设计二叉链表结构的相关函数库(2) 在程序设计中调用设计二叉链表结构的相关函数库(3) 在程序设计屮调用并实现二叉树的各种基本函数以及常用函数。(1) 按要求编写课程设

7、计报告书,能正确阐述设计结果。(2) 通过课程设计培养学生严谨的科学态度,认真的工作作风和团队协作 精神。(3) 学会文献检索的基本方法和综合运用文献的能力。(4) 在老师的指导下,要求每个学牛独立完成课程设计的全部内容。2. 问题的描述2. 1问题的模型化描述3数据结构3. 1定义二叉树结点类型typedef char datatype;typedef struct Nodechar data;struct Node * Lchild;struct Node * Rchild;BiTNode, BiTrcc;/二叉树节点,二叉链表typedef struct QueueNodeBiTree

8、data;struct QueueNode *next;L i nkQueueNode; /队列中的每个节点typedef struetLinkQueueNode *front;LinkQueueNode *rear;LinkQueue;/ 队列4. 模块划分4. 1入队void InitQueueLinkQueue *QQ-front LinkQueueNode *mallocsizeofLinkQueueNode;ifQ-front ! NULLQ-rear Q-front;Q-front-next NULL;else printf,z分配空间失败!n;void EnterQueueLin

9、kQueue Q,BiTree xLinkQueueNode *NewNode;NewNode LinkQueueNode malIocsizeofLinkQueueNode; ifNewNode ! NULLNcwNode-data x;NewNode-next NULL;Q-rear-next NewNode;Q-rear NewNode;4.3出队int QucucIsEmptyLinkQucuc *QifQ-front Q-rearreturn 1;else return 0;4.4根据先序递归建立二叉树void DclctcQueueLinkQucue *Q,BiTrcc *xLin

10、kQueueNode *p;ifQ-front Q-rearreturn ;p Q-front-next;Q-front-next p-next;ifQ-rear pQ-rear Q-front;*x p-data;freep;4. 5递归遍历输出函数void CreateBiTreeBiTree *blchar ch;ch getchar;ifch . *bt NULL;else*bt BiTreemalloc sizeofBiTNode;*bt-data ch;CreateBiTree&*bt-Lchild;CreateBiTree&*bt-RchiId;/*先序递归遍历二叉树*/void

11、 PreOrderBiTree rootifroot ! NULLprintfc ,z, root-data;PreOrderroot-LchiId;PreOrderroot-RchiId;/*后序递归遍历二叉树*/4. 6层次遍历输出算法void PostOrderBiTree rootifroot ! NULLPostOrderroot - Lchild;PostOrderroot - Rchild;printf/z%c ,z, root-data;void TnOrderBiTree rootifroot ! NULLInOrderroot-LchiId;printf%c ,z, roo

12、t-data;InOrderroot-RchiId;4. 7求二叉树深度得算法void depthBiTree root, int &depint depl, dep2;if!root depO;elsedcpthroot-LchiId, dcpl;dcpthroot-RchiId, dcp2;dcpdcpldcp2?dcpl + l:de p2+l;4. 8求二叉树叶子结点数的算法void countleafBiTree root, int&nif rootcountleafroot-LchiId, n;if!root-Lchild & !root-Rchildn+;coun11eafroo

13、t-Rchi1d, n;5运行程序5.1程序运行结果7结束语本次课程设计为时二周,我选的课题是设计岀树结构的相关函数库,以便 在程序设计中的调用。其主要研究内容在于实现了二叉链表的相关函数库的调 用。为了实现以链表为存储结构的二叉树的有关操作,要熟练掌握二叉链表的特 性,但对于一些算法较为复杂,代码量多些,容易出现一些变量的定义、函数声明、 函数调用等细节上的问题出错。在本程序的设计过程屮,为了克服以上困难,采取 了一些措施:建立清晰的程序设计的步骤方法,分步各个模块程序设计,进行仔细 的总体结构设计,反复调试、细心观察达到完善整个系统等。二叉树的递归算法 主要是将二叉树存储到链表结构中。遍历

14、是二叉树各种操作的基础,先序、中序、 后序是二叉树遍历的三种基木遍历方法。而这些都是数据结构的基础内容,是我 们必须理解和牢记的基础知识。将这些基础算法综合起来,更能清晰地认识和理 解各种算法的作用。当然,要学会编程不会仅局限于课本知识,而是根据课本知识 进行有效的拓展,并且不得不学会在众多的参考资料中搜索有用的自己所需的知 识,并迫使自己去学习掌握它们,从中不断提高自己。虽然程序规模不大,我们依 然为此付出了努力,仍免不了各种错误的出现。编程过程需要很大的毅力和耐心, 而且要有良好的思维和扎实的专业基础知识,所以我们需要不断的学习,发现自 身不足之处并改止它,逐步提高自身能力,不断取得进步。

15、对于数据结构的学习, 一直感到很吃力,也想过放弃。通过实践,我们接触到了很多关于的Microsoft Visual C+ 6.0编程让我们认识到知识的运用性,并加深对基础知识的理解,从 中了解自己需要学习的东西并学会自学。在此我们要感谢我的老师对我们专心致 志的辅导,让我们学会了许多分析和解决问题的方法,让我们受益匪浅。通过几个 星期的努力,虽然从中也发现了 &己很多不足,可能其中还有不少问题,但我觉得最重要的是自己也从屮得到很多;不敢说百分百的完成也应该基本上完成了课题 任务,成功地实现课题目标。参考文献1 严蔚敏.数据结构(C语言版)M北京:清华大学出版社,1997.2 谭浩强.C程序设计

16、(第三版)M.北京:清华大学出版社,2005. 1附录: 源程序代码ttincludettincludetypcdcf struct Nodechar data;struct Node * Lchild;struct Node * Rchild;BiTNode, BiTree;/二叉树节点,二叉链表typedef struct QucueNodeBiTree data;struct QueueNode *next;LinkQueueNode; /队列中的每个节点typedef structLinkQueueNode *fTont;LinkQueueNode *rear;LinkQueue;/队

17、列void InitQueueLinkQueue *QQ-front LinkQueueNode *mallocsizeofLinkQueueNode;ifQ-front ! NULLQ-rear Q-front;Q-front-nextNULL;else printfz,分配空间失败!n;/*入队*/void EnterQueueLinkQueue *Q,Bi Tree xLinkQueueNode *NewNode;NewNode LinkQueueNode *mallocsizeofLinkQueueNode;ifNewNode ! MULLNewNode-datax;NewNode-n

18、extNULL;Q-rcar-ncxtNewNode;Q-rear NewNode;/*队列判空*/int QueueIsEmptLinkQueue *QifQ-front Q-rearreturn 1;else return 0;/*出队*/void DeleteQueueLinkQueue BiTree *xLinkQueueNode *p;ifQ-front Q-rearreturn ;p Q-front-next;Q-front-next p-next;ifQ-rear pQ-rear Q-front;*x p-data;freep;/*利用扩展先序遍历序列创建二叉链表*/void C

19、reateB订reeB订ree *btchar ch;ch getchar;ifch *bt NULL;else*bt BiTreemalloc sizeofBiTNode;*btdata ch;CrcatcBiTrcc&bt-Lch订d;CreateBiTree&*bt-RchiId;/*先序递归遍历二叉树*/void PreOrderBiTree rootifroot ! NULLprintf/z%c ,z, root-data;PreOrderroot-Lchild;PreOrdcrroot-RchiId;/*后序递归遍历二叉树*/void PostOrderBiTree rootifr

20、oot ! NULLPostOrderroot - Lehi Id;PostOrderroot - Rchild;printf/z%c z/, root-data;void InOrderBiTree rootifroot ! NULLTnOrderroot-Lchild;printfz,%c root-data;InOrderroot-RchiId;/*层序遍历对给定的二叉树进行层序遍历*/void LayerOrderBiTree rootBiTree *x; /这里要记得申请空间 x BiTrcc *mallocsizcofBiTrcc;ifx NULL printf,z 内存分配失败!

21、n;LinkQueue *Q; Q LinkQueue *mcillocsizeofLinkQueue; InitQueueQ;、*x-data;if*x-LchildEnterQueueQ,*x-Lchild;if*x-RchildEnterQueueQ, *x-Rch订d;void countleafBiTree root, int&nif rootcountleafroot-LchiId, n;if!root-Lchild & !root-Rchildn+;coun11eafroot-Rchi1d, n;void depthBiTree root, int &depint depl, d

22、ep2;if!root dcpO;elsedepthroot-LchiId, depl;depthroot-RchiId, dep2;depdepldep2?depl + l:de P2+1;int mainint argc 、 char *argvint nO, dep; BiTrcc root; CrcatcBiTrcc&root; printf先序递归遍 历:n; PreOrderroot; printfn; printf中序递 归遍历:n; InOrderroot; printf,zn; printf后序递归遍历:n,z; PostOrderroot; printfrT; printf层 序遍历 :n; LayerOrderroot; printfn; depthroot, dep; printf深度 dep%dn,dep; countleafroot, n; prin 叶子结点数 n%dnz n; printfn; return 0;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1