厦门理工c语言课程设计,厦门理工c语言数据结构实验6.doc-资源下载在线文库www.lddoc.cn...

这篇实验报告详细介绍了如何通过C语言实现二叉树的构造,包括将数学表达式转化为表达式二叉树,并实现前序、中序和后序遍历。此外,还提供了计算二叉树叶节点个数的代码。实验在Windows环境下使用Microsoft Visual Studio 6.0进行,加深了对指针变量、动态内存分配和二叉树特性的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

厦门理工 c语言数据结构 实验6.doc

数据结构实验报告实验序号6 实验项目名称树和二叉树的操作学号姓名专业、班实验地点指导教师实验时间一、实验目的及要求1、进一步掌握指针变量、动态变量的含义。2、掌握二叉树的结构特征,以及各种存储结构的特点及适用范围。3、掌握用指针类型描述、访问和处理二叉树的运算。4、掌握用二叉树前序、中序、后序、层次遍历的方法。二、实验设备(环境)及要求微型计算机;windows 操作系统;Microsoft Visual Studio 6.0集成开发环境。三、实验内容与步骤1根据P129的方法,将a*b-cd*e/fg转化为表达式二叉树(绘图),并写出表达式二叉树的前序、中序和后序遍历顺序。2. 链式表表示和实现二叉树如下include stdio.hinclude stdlib.hdefine max 50typedef struct liuyuint data;struct liuyu *lchild,*rchild;test;liuyu *root,*p,*qmax;int sum0;int msizeoftest; void insert_dataint x /*生成二叉排序树*/ liuyu *p,*q,*s;stest*mallocm;s-datax;s-lchildNULL;s-rchildNULL;ifrootroots; proot; whilep /*如何接入二叉排序树的适当位置*/qp;ifp-dataxprintfdata already exist n;return;else ifxp-datapp-lchild; else pp-rchild;ifxq-dataq-lchilds;else q-rchilds;void main /*先生成二叉排序树*/int i,x;i1; rootNULL; /*千万别忘了赋初值给root*/doprintfplease datad,i;i;scanfd,x; /*从键盘采集数据,以-9999表示输入结束*/ifx-9999 printfnNow output data valuen; else insert_datax; /*调用插入数据元素的函数*/ whilex-9999; 改写以上程序,实现功能如下任选两题1.编写函数实现前序、中序和后序遍历。运行结果截图2.编写函数实现计算叶节点个数。运行结果截图四、分析与讨论对上机实践结果进行分析,上机的心得体会。五、教师评语签名日期成绩附源程序清单1. include stdlib.hinclude stdio.htypedef int TElemType;typedef struct BiTNodeTElemType data;struct BiTNode *lchild,*rchild;BiNode, *Bitree;DLR Bitree root if root NULL 非空二叉树 printfd,root-data; 访问D DLRroot-lchild; 递归遍历左子树 DLRroot-rchild; 递归遍历右子树 return0; LDRBitree root ifroot NULL LDRroot-lchild; printfd,root-data; LDRroot-rchild; return0;LRD Bitree root ifroot NULL LRDroot-lchild; LRDroot-rchild; printfd,root-data; return0;Bitree root;定义根结点 void insert_dataint x /*生成/树*/ Bitree p,q,s;sBitreemallocsizeofBiNode; 创建结点s-datax; 结点赋值s-lchildNULL;s-rchildNULL;ifrootroots; elseproot; whilep /*如何接入二叉排序树的适当位置*/qp;ifp-datax 相同结点不能重复插入printfdata already exist n;return;else ifxp-datapp-lchild; else pp-rchild;ifxq-dataq-lchilds;else q-rchilds;void main /*先生成二叉排序树*/int i1,x; i记录结点个数,x存放结点值rootNULL; /*千万别忘了赋初值给root*/printf请输入数据,-9999表示输入结束n;doprintfplease data d,i;i;scanfd,x; /*从键盘采集数据,以-9999表示输入结束*/ifx-9999 printfnNow output data valuen; else insert_datax; /*调用插入数据元素的函数*/whilex-9999; printfnDLR; DLRroot; printfnLDR; LDRroot; printfnLRD; LRDroot;2.include stdlib.hinclude stdio.htypedef int TElemType;typedef struct BiTNodeTElemType data;struct BiTNode *lchild,*rchild;BiNode, *Bitree;Bitree root;定义根结点 int CountLeaf Bitree root 返回指针T所指二叉树中所有叶子结点个数int m,n; if root return 0; if root-lchild root-rchild return 1; else m CountLeaf root-lchild; n CountLeaf root-rchild; return mn; else CountLeafvoid insert_dataint x /*生成/树*/ Bitree p,q,s;sBitreemallocsizeofBiNode; 创建结点s-datax; 结点赋值s-lchildNULL;s-rchildNULL;ifrootroots; elseproot; whilep /*如何接入二叉排序树的适当位置*/qp;ifp-datax 相同结点不能重复插入printfdata already exist n;return;else ifxp-datapp-lchild; else pp-rchild;ifxq-dataq-lchilds;else q-rchilds;void main /*先生成二叉排序树*/int i1,x; i记录结点个数,x存放结点值int sum;rootNULL; /*千万别忘了赋初值给root*/printf请输入数据,-9999表示输入结束n;doprintfplease data d,i;i;scanfd,x; /*从键盘采集数据,以-9999表示输入结束*/ifx-9999 printfnNow output data valuen; else insert_datax; /*调用插入数据元素的函数*/whilex-9999;printf n叶节点个数;sumCountLeaf root;printfdn,sum;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值