数据结构用c语言描述实验五.docVIP

  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文档。上传文档
查看更多
数据结构用c语言描述实验五

实验五 实验名称 二叉树及其应用 实验性质 设计性 实验学时数 6学时 一、实验目的 1.掌握二叉树链表的结构和构造过程。 2.掌握用递归方法实现二叉树的遍历。 3.加强对二叉树的理解,培养解决实际问题的能力。 二、实验内容 1. 用递归方法实现对二叉树的遍历等操作。 2. 二叉树的其他操作算法。 三、 实 验 过 程 1、实验题目 [问题描述] 以下题目根据自己兴趣和能力可选作二道作为实验题目: (1)创建一颗二叉树,用递归方法实现对其进行先序、中序和后序遍历的操作; (2)根据题目1,修改其中一个算法,用来计算统计二叉树中叶子节点的个数和度为1、度为2的节点个数; (3)设计并实现一个哈夫曼树并对其进行编码。 (4)修理牧场。农夫要修理牧场的一段栅栏,发现需要N块木头,每块木头长度为整数Li个长度单位,于是他购买了一条很长的、能锯成N块的木头,即该木头的长度是Li的总和。但是农夫自己没有锯子,请人锯木的酬金跟这段木头的长度成正比。简单起见,设酬金等于所锯木头的长度。例如,将长度为20的木头锯成长度为8、7和5的三段,第一次锯木头将木头锯成12和8,花费20;第二次将木头长度为12的木头锯成7和5花费12,总花费为32.如果第一次将木头锯成15和5 ,则第二次锯木头花费15,总花费35(大于32)。请编写程序帮助农夫计算将木头锯成N块的最少花费。输入数据N表示要将木头锯成N块,然后输入N个整数,表示每段木块的长度。输出将木头锯成N块的最少花费。(可采用哈夫曼算法和最小堆实现) [基本要求] (1)按实验内容编写完整的程序,并上机验证。 (2)实验完成后,提交电子档教师验收程序,并提交填写好的实验报告。 [测试数据] 由学生依据软件工程的测试技术自己确定。注意测试边界数据。 2、源程序 #includestdio.h #includemalloc.h #define DataType char #define Visit char typedef struct Node //定义二叉链表节点结构 { DataType data; struct Node *LChild; struct Node *RChild; }BiTNode,*BiTree; void inist(BiTree *root) //初始化二叉链表 { (*root)=(BiTree)malloc(sizeof(BiTNode)); (*root)-LChild=NULL; (*root)-RChild=NULL; } void CreateBiTree(BiTree *bt) //创建二叉链表 { char ch; ch=getchar(); if(ch==‘;’) *bt=NULL; else { *bt=(BiTree)malloc(sizeof(BiTNode)); (*bt)-data=ch; CreateBiTree(((*bt)-LChild)); CreateBiTree(((*bt)-RChild)); } } void PreOrder(BiTree root) /*先序遍历二叉树,root为指向二叉树根节点的指针*/ {if(root!=NULL) { Visit(root-data); printf(%c\n,root-data); PreOrder(root-LChild); PreOrder(root-RChild); } } void InOrder(BiTree root) /*中序遍历二叉树,root为指向二叉树根节点的指针*/ {if(root!=NULL) { InOrder(root-LChild); Visit(root-data); printf(%c\n,root-data); InOrder(root-RChild); } } void PostOrder(BiTree root) /*后序遍历二叉树,root为指向二叉树根节点的指针*/ {if(root!=NULL) { PostOrder(root-LChild); PostOrder(root-RChild); Visit(root-data); printf(%c\n,root-data); } } int main() //主函数 { int choice; BiTree bt; inist(bt); bt=(BiTree)malloc(sizeof(BiTNode)); printf(请输入字符以‘ ; ’结束:); Cr

文档评论(0)

yaobanwd + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档