- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构课程设计报告
姓 名
班 级
学 号
指导老师
一、 课程设计目的
培养学生用学到的书本知识解决实际问题的能力; 培养实际工作所需要的动
手能力;培养学生以科学理论和工程上能力的技术,规范地开发大型、复杂、高
质量的应用软件和系统软件具有关键性作用; 通过课程设计的实践, 学生可以在
程序设计方法、上机操作等基本技能和科学作风方面受到比较系统和严格的训练。
二、 课程设计要求
1)学生必须仔细阅读《数据结构》课程设计方案,认真主动完成课程设计的要求。有问题及时主动通过各种方式与教师联系沟通。
2)学生要发挥自主学习能力,充分利用时间,安排好课程设计的时间计划,并在课程设计过程中不断检测自己的计划完成情况,及时向教师汇报。
3)课程设计按照教学计划需要一周时间完成, 一周中每天至少要上两小时的上机来调试 C 或 C++语言设计的程序,总共至少要上机调试程序 10 小时。属教师安排上机时间学生不得缺席。
三、 课程设计内容
二叉树的中序、前序、后序的递归、非递归遍历算法,层次序的非递归遍历算法的实现,应包含建树的实现。
四、 课程设计原理
设计思想
以广义表格式输入一个二叉树, 将其接收至一维数组中, 利用栈结构建立二
叉链表树;通过先、中、后访问根结点递归算法遍历二叉树;利用栈结构依次将
结点入栈、出栈实现二叉树的非递归遍历算法; 利用队列的入队、 出队操作实现
二叉树的层次遍历。
例如: a(c(,d), f(g,))建立如下图所示二叉树。
a
c f
d g
数据结构
typedef BTREENODEPTR elemtype;
队列数据类型定义
typedef struct{
elemtype *elem;
int front,rear;
int size;
}SqQueue;
栈数据类型定义
typedef struct stack_tag{
elemtype *elem;
int top;
int size;
}SQSTACK;
二叉树数据类型定义
typedef struct btreenode{
char data;
struct btreenode *lchild,*rchild;
}BTREENODE,*BTREENODEPTR,*BTREE;
主要模块设计
BTREE CreateBtree1(char *str) ;//创建二叉树
void PreOrder(BTREE root) ; //先序递归遍历二叉树
void InOrder(BTREE root) ; //中序递归遍历二叉树
void PostOrder(BTREE root) ; //后序递归遍历二叉树
void PreOrder_1(BTREE root) ; //先序非递归遍历二叉树
void InOrder_1(BTREE root) ; //中序非递归遍历二叉树
void PostOrder_1(BTREE root) ; //后序非递归遍历二叉树
void LayerOrder(BTREE root) ; //层次遍历
其他模块包括栈的初始化及其基本操作和队列的初始化及基本操作。
将以广义表形式输入的二叉树接收
到数组 str[80] 中,成功建立二叉树
主菜单
先
中
后
先
中
后
层
序
序
序
序
序
序
次
递
递
递
非
非
非
遍
归
归
归
递
递
递
历
遍
遍
遍
归
归
归
历
历
历
遍
遍
遍
历
历
历
结束
详细设计
二叉树的建立
其中 mark 的值 1、2、3、4 分别指 str[i] 为字母、‘ (’、‘,’、‘)’; tag 为左、右孩子的标志;
root=null
N
str[0] 是否为字母
Y
mark=1 ; root-data=str[0],root-lchild=root-rchild=null;p=root;
检查 str[1~ ’\0’]
‘(’ ‘)’ ‘,’
Y
mark=4
mark==3
mark==2
N
N
mark=2
pop 为空
mark=3
str[i] 入栈
N
tag=1
tag=0
Y
‘ )’
mark==1 N
栈不空
Y
新建结点 p
p-data=str[i]
p-lchild=p-
rchild=null
tag==0?
栈顶 栈顶
-lchild=p -rchild=p
循环结束后 return root
return null
二叉树的递归遍历 (以先序遍历为例 )
开始
Y
结点为空
N
访问根节点
先序遍历方式遍历左子树
先序遍历方式遍历右子树
结束
二叉树的非递归遍历 (以先序遍历为例 )
初始化队列, root 入队
N
栈非空 结束
Y
出栈 p;打印 p-data
p-lchild!=null
Y N
p-lc
您可能关注的文档
最近下载
- QTTXB001-2021 金属材料-不锈钢棒.pdf VIP
- 基于51单片机的电子密码锁设计.docx VIP
- (76页PPT)西式面点技术第四章蛋糕的制作.pptx VIP
- 小学体育--立定跳远公开课教案.docx VIP
- 2024年中考英语语法复习:一般现在时和现在进行时120题练习题(含答案).pdf VIP
- 大班语言《妈妈发火了》微课件.pptx VIP
- 2024年江苏省普通高中学业水平合格性考试调研学生物试题(解析版).docx VIP
- 1基于RS和GIS的青岛市近十年来土地利用动态变化的研究与分析.ppt VIP
- 部编三年级语文上册 富饶的西沙群岛 课后练习(含答案).doc VIP
- 20S517- 排水管道出水口.pdf VIP
原创力文档


文档评论(0)