没有合适的资源?快使用搜索试试~ 我知道了~
首页c语言 实现二叉树操作 用栈实现算术表达式求值
资源详情
资源推荐
沈阳理工大学课程设计专用纸
目 录
题目 一.二叉树操作(1)二.算术表达式求..........................................................................................................1
一、课程设计的目的...........................................................................................................................................1
二、课程设计的内容和要求...............................................................................................................................1
三、题目一设计过程...........................................................................................................................................1
四、题目二设计过程...........................................................................................................................................5
五、设计总结.....................................................................................................................................................13
六、参考文献.....................................................................................................................................................13
沈阳理工大学
沈阳理工大学课程设计专用纸
No. 1
题目 一.二叉树操作(1)二.算术表达式求
一、课程设计的目的
本学期我们对《数据结构》这门课程进行了学习。这门课程是一门实践性非常强
的课程,为了让大家更好地理解与运用所学知识,提高动手能力,我们进行了此次课
程设计实习。这次课程设计不但要求学生掌握《数据结构》中的各方面知识,还要求
学生具备一定的 C 语言基础和编程能力。
(1)题目一的目的:
1、掌握二叉树的概念和性质
2、掌握二叉树的存储结构
3、掌握二叉树的基本操作
(2)题目二的目的:
1、掌握栈的顺序存储结构和链式存储结构
2、掌握栈的先进后出的特点
3、掌握栈的基本运算
二、课程设计的内容和要求
(1)题目一的内容和要求:
1、编写已知二叉树的先序、中序序列,恢复此二叉树的程序
2、编写求二叉树深度的程序
(2)题目二的内容和要求:
1、算术表达式由操作数、运算符和界限符组成。操作数是正整数,运算符为
加减乘除,界限符有左右括号和表达式起始
2、将一个表达式的中缀形式转化为相应的后缀形式
3、依据后缀表达式计算表达式的值
三、题目一设计过程
1、题目分析
沈阳理工大学
沈阳理工大学课程设计专用纸
No. 2
现已知一棵二叉树的先序遍历序列和中序遍历序列,依次从先序遍历序列中取
结点,由先序序列确定根结点(就是第一个字母),每次取出一个结点就与中序遍
历的序列进行比较,当相等的时候,中序遍历序列就被分成以该结点为根的二叉
树子树,该结点左部分为左子树,右部分为右子树,直到取完先序列里的所有结
点,则二叉树构造完毕(树用链式存储结构存储),用递归实现!
由建好的二叉树,先判断这棵树是否为空,若不为空则找数的左子树,统计它
的高度,然后找树的右子树,统计它的高度,比较左子树和右子树的高度,然后
返回其中大的那个值加一,则求出数的高度。这里用递归实现!
2、算法描述
main ( )(主函数)
先构造一颗二叉树,初始化为空,用来存储所构造的二叉树,并输入一棵树
的先序序列和中序序列,并统计这个序列的长度。然后调用实现功能的函数。
void CreateBiTree(BiTree *T,char *pre,char *in,int len)(由先序序列和中序序列构造
二叉树)
根据前序遍历的特点, 知前序序列(pre)的首个元素(pre[0])为根(root), 然后在中
序序列(in)中查找此根(pre[0]), 根据中序遍历特点, 知在查找到的根(root) 前边的序
列为左子树, 后边的序列为右子树。 设根前边有 n 个元素,则又有, 在前序序列中,
紧跟着根(root)的 n 个元素序列(即 pre[1...n]) 为左子树, 在后边的为右子树,而构造
左子树问题其实跟构造整个二叉树问题一样,只是此时前序序列为 pre[1...n]), 中序
序列为 in[0...n-1], 分别为原序列的子串, 构造右子树同样。这里用递归实现!
int Depth(BiTree T)(求树的深度)
当所给的参数 T 是 NULL 时,返回 0。说明这个树只有一个叶子节点深度为
0,当所给的参数不是 NULL 时,函数调用自己看看这个参数的左分支是不是
NULL,如果不是继续调用自己看看左分支的左分支是不是 NULL,直到最后一个
的左分支是 NULL。 然后看与最后一个左分支并列的右分支是不是 NULL,不是
的话自动调用自己,直到是 NULL。同理求出右分支,然后左分支深度和右分支
深度比较,返回值大的作为深度。
3、源代码
#include<stdio.h>
#include<malloc.h>
typedef struct Node
{
char data;
struct Node *lchild;
struct Node *rchild;
}*BiTree,BitNode;
void InitBitTree(BiTree *T);//初始化一棵树
沈阳理工大学
剩余13页未读,继续阅读
liangjiang1989
- 粉丝: 0
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 基于嵌入式ARMLinux的播放器的设计与实现 word格式.doc
- 经典:大学答辩通过_基于ARM微处理器的嵌入式指纹识别系统设计.pdf
- 嵌入式系统课程设计.doc
- 基于飞思卡尔控制器的智能寻迹车设计ARM基础课程课程设计.doc
- 下载基于ARM7的压电陶瓷换能器导纳圆测量仪的研制PDF格式可编辑.pdf
- 课程设计基于ARM的嵌入式家居监控系统的研究与设计.doc
- 论文基于嵌入式ARM的图像采集处理系统设计.doc
- 嵌入式基于ARM9的中断驱动程序设计—课程设计.doc
- 在Linux系统下基于ARM嵌入式的俄罗斯方块.doc
- STK-MirrorStore Product Release Notes(96130)-44
- STK-MirrorStore Storage Connectivity Guide for StorageTek Disk A
- 龙虾养殖远程监控系统的设计与实现数据采集上位-机软件模块-本科毕业设计.doc
- 龙虾养殖远程监控系统的设计与实现数据采集上位-机软件模块-.doc
- 龙虾养殖远程监控系统的设计与实现数据采集上位-机软件模块-本科生毕业论文.doc
- 麻阳风貌展示网站的设计与实现毕业论文.pdf
- 高速走丝气中电火花线切割精加工编程设计.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功