厦门理工C语言实验报告8,厦门理工c语言数据结构实验

《厦门理工c语言数据结构实验》由会员分享,可在线阅读,更多相关《厦门理工c语言数据结构实验(15页珍藏版)》请在人人文库网上搜索。

1、数据结构实验报告 实验序号:6 实验项目名称:树和二叉树的操作 学 号 姓 名专业、班实验地点指导教师实验时间一、实验目的及要求 1、进一步掌握指针变量、动态变量的含义。 2、掌握二叉树的结构特征,以及各种存储结构的特点及适用范围。 3、掌握用指针类型描述、访问和处理二叉树的运算。 4、掌握用二叉树前序、中序、后序、层次遍历的方法。 二、实验设备(环境)及要求 微型计算机; windows 操作系统; Microsoft Visual Studio 6.0集成开发环境。 三、实验内容与步骤 1根据P129的方法,将a*b-(c+d*e/f)+g)转化为表达式二叉树(绘图),并写出表达式二叉树的。

2、前序、中序和后序遍历顺序。 2. 链式表表示和实现二叉树如下: #include #include #define max 50 typedef struct liuyu int data; struct liuyu *lchild,*rchild; test; liuyu *root,*p,*qmax; int sum=0; int m=sizeof(test); void insert_data(int x) /*生成二叉排序树*/ liuyu *p,*q,*s; s=(test*)malloc(m); s-data=x; s-lchild=NULL; s-rchild=NULL; if(。

3、!root) root=s; p=root; while(p) /*如何接入二叉排序树的适当位置*/ q=p; if(p-data=x) printf(data already exist! n); return; else if(xdata) p=p-lchild; else p=p-rchild; if(xdata) q-lchild=s; else q-rchild=s; void main() /*先生成二叉排序树*/ int i,x; i=1; root=NULL; /*千万别忘了赋初值给root!*/ do printf(please input data%d:,i); i+; s。

4、canf(%d,&x); /*从键盘采集数据,以-9999表示输入结束*/ if(x=-9999) printf(Now output data value:n); else */ 调用插入数据元素的函数insert_data(x); /* while(x!=-9999); 改写以上程序,实现功能如下(任选两题): 1.编写函数实现前序、中序和后序遍历。 运行结果截图: 2.编写函数实现计算叶节点个数。 运行结果截图: 四、分析与讨论对上机实践结果进行分析,上机的心得体会。五、教师评语 签名: 日期:成绩附源程序清单:#include 1. #include typedef int TElem。

5、Type; typedef struct BiTNode TElemType data; struct BiTNode *lchild,*rchild; BiNode, *Bitree; DLR( Bitree root ) if (root !=NULL) /非空二叉树 D printf(%d,root-data); /访问 递归遍历左子树 DLR(root-lchild); / 递归遍历右子树 DLR(root-rchild); / return(0); LDR(Bitree root) if(root !=NULL) LDR(root-lchild); printf(%d,root-da。

6、ta); LDR(root-rchild); return(0); LRD (Bitree root) if(root !=NULL) LRD(root-lchild); LRD(root-rchild); printf(%d,root-data); return(0); Bitree root;/定义根结点 void insert_data(int x) /*生成/树*/ Bitree p,q,s; s=(Bitree)malloc(sizeof(BiNode); /创建结点 s-data=x; /结点赋值 s-lchild=NULL; s-rchild=NULL; if(!root) ro。

7、ot=s; else p=root; while(p) /*如何接入二叉排序树的适当位置*/ q=p; if(p-data=x) /相同结点不能重复插入 printf(data already exist! n); return; else if(xdata) p=p-lchild; else p=p-rchild; if(xdata) q-lchild=s; else q-rchild=s; void main() /*先生成二叉排序树*/ int i=1,x; /i记录结点个数,x存放结点值 root=NULL; /*千万别忘了赋初值给root!*/ 牰湩晴尨请输入数据,-9999表示输入。

8、结束n); do printf(please input data %d:,i); i+; scanf(%d,&x); /*从键盘采集数据,以-9999表示输入结束*/ if(x=-9999) printf(Now output data value:n); else insert_data(x); /*调用插入数据元素的函数*/ while(x!=-9999); printf(DLR); DLR(root); printf(LDR); LDR(root); printf(LRD); LRD(root); 2. #include #include typedef int TElemType; 。

9、typedef struct BiTNode TElemType 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 。

10、(m+n); /else / CountLeaf void insert_data(int x) /*生成/树*/ Bitree p,q,s; s=(Bitree)malloc(sizeof(BiNode); /创建结点 s-data=x; /结点赋值 s-lchild=NULL; s-rchild=NULL; if(!root) root=s; else p=root; while(p) /*如何接入二叉排序树的适当位置*/ q=p; if(p-data=x) /相同结点不能重复插入 printf(data already exist! n); return; else if(xdata) 。

11、p=p-lchild; else p=p-rchild; if(xdata) q-lchild=s; else q-rchild=s; void main() /*先生成二叉排序树*/ int i=1,x; /i记录结点个数,x存放结点值 int sum; root=NULL; /*千万别忘了赋初值给root!*/ 牰湩晴尨请输入数据,-9999表示输入结束n); do printf(please input data %d:,i); i+; */ 表示输入结束-9999从键盘采集数据,以/* scanf(%d,&x); if(x=-9999) printf(Now output data value:n); else insert_data(x); /*调用插入数据元素的函数*/ while(x!=-9999); printf( n叶节点个数=); sum=CountLeaf (root); printf(%dn,sum);。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值