数据结构实验报告.doc

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构实验报告

甘肃政法学院本科生实验报告(三)姓名: 学院: 专业: 班级: 实验课程名称: 数据结构实验日期:2013年 05 月 24 日指导教师及职称:实验成绩:开课时间:2012~2013 学年 第二学期实验题目数据结构实验小组合作姓名班级学 号一、实验目的7.1.实现二叉树的各种基本运算的算法7.2.实现二叉树的各种遍历算法7.3.求二叉树中从根节点到叶子节点的路径7.4.由遍历序列构造二叉树7.5.实现中序线索化二叉树7.6.构造哈夫曼树7.7.用二叉树来表示代数表达式二.实验环境计算机、Visual C++三、实验内容与步骤7.1. 编写一个程序algo7-1.cpp ,实现二叉树的各种运算,并在此基础上设计一个程序exp7-1.cpp完成如下功能(b为如图7.1所示的一棵二叉树):1.输出二叉树b;2.输出H节点的左、右孩子节点值;3.输出二叉树b的深度;4.输出二叉树b的宽度;5.输出二叉树b的节点个数;6.输出二叉树b的叶子节点个数;7.释放二叉树b;主程序如下:#include stdio.htypedef char ElemType;typedef struct node{ElemType data; //数据元素struct node *lchild; //指向左孩子struct node *rchild; //指向右孩子}BTNode;extern void CreateBTNode(BTNode *b,char *str);extern BTNode *FindNode(BTNode *b,ElemType x);extern BTNode *LchildNode(BTNode *p);extern BTNode *RchildNode(BTNode *p);extern int BTNodeDepth(BTNode *b);extern void DispBTNode(BTNode *b);extern int BTWidth(BTNode *b);extern int Nodes(BTNode *b);extern int LeafNodes(BTNode *b);extern void DestroyBTNode(BTNode *b);void main(){BTNode *b,*p,*lp,*rp;;CreateBTNode(b,A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I))));printf(二叉树的基本运算如下:\n);printf((1)输出二叉树:);DispBTNode(b);printf(\n);printf((2)H节点:);p=FindNode(b,H);if (p!=NULL){lp=LchildNode(p);if (lp!=NULL) printf(左孩子为%c ,lp-data);elseprintf(无左孩子);rp=RchildNode(p);if (rp!=NULL)printf(右孩子为%c,rp-data);elseprintf(无右孩子);}printf(\n);printf((3)二叉树b的深度:%d\n,BTNodeDepth(b));printf((4)二叉树b的宽度:%d\n,BTWidth(b));printf((5)二叉树b的节点个数:%d\n,Nodes(b));printf((6)二叉树b的叶子节点个数:%d\n,LeafNodes(b));printf((7)释放二叉树b\n);DestroyBTNode(b);}运行结果如下:7.2. 设计一个程序exp7-2.cpp,实现二叉树的先序遍历、中序遍历和后序遍历的各种递归和非递归算法,以及层次遍历的算法。并对图7.1所示的二叉树b给出求解结果。主程序如下:#include stdio.h#include malloc.h#define MaxSize 100typedef char ElemType;typedef struct node{ElemType data;//数据元素struct node *lchild;//指向左孩子struct node *rchild;//指向右孩子}BTNode;extern void CreateBTNode(BTNode *b,char *str);extern void DispBTNode(BTNode *b);extern void DestroyBTNode(BTNode *b);void PreOrder(BTNode *b)//先序遍历的递归算法{if (b!=NULL){printf(%c ,b-data);//访问根节点PreOrder(b-lchild);//递归访问左子树PreOrder(b-rch

您可能关注的文档

文档评论(0)

bm5044 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档