-
.
课程设计指导书
姓
名
课程名称
学
号
数据结构
课程性质
班
级
专业必修课
设计时间
设计名称
设计目的
设计要求
2010
年
12
月
1
日——
2010
年
12
月
20
日
设计二叉链表结构的相关函数库
使用
Microsoft Visual C++
设计二叉链表结构的相关函数库,并
能够在程序设计中调用
设计二叉链表结 构的相关函数库,以便在程序设计中调用,实现二
叉树的各种基本函数以及常用函数;并给出
1 -2
个例子,通过调用
自己的库函数来实现问题的求解。
1.
程序需求分析
完成:根据需求分析,确定各个程序功能的需求;
2.
程序总统设计
设计思路
与
设计过程
完成:根据程序需求,进行程序大概框架的设计;
3.
主函数设计
完成:主函数程序中设计一个菜单,并调试所用算法;
4.
其他函数设计
完成:建立二叉链表以及递归序列遍历算法
5.
系统程序完善
完成:完善整个程序细节代码的要求,进行调试。
.
.
计划与进度
12.1-12.2
复习对
vc++6.0
使用,了解关于二叉链表
的相关特征等。
12.3-12.4
查找有关二叉链表基本操作的算法等。
12.5-12.7
根据需求分析,确立各个函数程序功能。
12.8-12.10
根据程序需求,进行相关子函数程序的编
写。
12.11-12.13
进行主函数程序功能的设计编写。
12.14-12.16
进行对整个程序的完善。
12.17-12.18
进行程序的调试运行。
12.19-12.20
资料归档,填写相关文档。
任课教师
意
见
备
注
.
.
.
课程设计报告
课程:
学号:
姓名:
班级:
教师
时间:
计算机科学与技术系
.
设计名称:
设计二叉链表的相关函数库
日期:
2010
年
12
月
20
日
设计内容:
使用
Microsoft Visual C++
设计二叉链表结构的相关函数库,以便
在程序设计中调用
设计目的与要求:
设计二叉链表结构的相关函数库,
在程序设计中调用,
并实现二
叉树的各种基 本函数以及常用函数。
设计环境或器材、原理与说明:
器材:计算机一台
硬件环境:
处理器:
Intel core i3
内存:
1GB
硬盘空间:
320GB
显卡:
ATI Mobility Radeon
软件环境:
Windows XP,Microsoft Visual C++6.0
使用数据结构设计的一般方法步骤进行设计。
.
.
设计过程(步骤)和部分程序代码
(
可以加页
)
:
一.
题目要求
设计二叉链表结 构的相关函数库,
在程序设计中调用,并实现二叉树的各种
基本函数以及常用函数。
二.
需求分析
建立一棵二叉树:
(
1
)二叉树的链表结构;
(
2
)进行先序遍历,输出结果;
(
3
)进行中序遍历,输出结果;
(
4
)进行后序遍历,输出结果;
(
5
)进行层次遍历,输出结果。
三.
运行环境
Windows XP
四.
开发工具和编程语言
1.
开发工具:
Microsoft Visual C++6.0
2.
编程语言:
C
语言
五.
概要设计
1.
数据结构
typedef char datatype;
typedef struct node //
定义二叉树结点类型
{
datatype data;
struct node *lchild;
struct node *rchild;
}Btnode,* Btree;
2.
模块划分
1
.根据先序递归建立二叉树
Btree pre_creat()
.
.
2
.递归遍历输出函数
void preorder_btree(Btree root) //
由先根序列遍历输出二叉树
void inorder_btree(Btree root) //
由中根序列遍历输出二叉树
void postorder_btree(Btree root) //
由后根序列遍历输出二叉树
3
.层次遍历输出算法
void level_btree(Btree root) //
层次遍历输出二叉树
六.
详细设计
1
.创建二叉树的实现
Btree pre_creat() //
使用先根序列建立二叉树,返回指针
{
Btree t;
char ch;
fflush(stdin);
scanf(
输入一个结点数据
if(ch=='@')
return NULL; //
空结点
else
{
t=(Btnode *)malloc(sizeof(Btnode)); //
申请结点空间,根节点
t->data=ch;
t->lchild=pre_creat(); //
生成左子树
t->rchild=pre_creat(); //
生成右子树
}
return t;
}
2
.先序、中序、后序递归遍历输出算法
void preorder_btree(Btree root) //
由先根序列输出二叉树
{
Btree p=root;
if(p!=NULL)
{
printf(
输出结点值
preorder_btree(p->lchild); //
输出左子树
preorder_btree(p->rchild); //
输出右子树
}
}
void inorder_btree(Btree root) //
由中根序列输出二叉树
{
.
.
Btree p=root;
if(p!=NULL)
{
inorder_btree(p->lchild); //
输出左子树
printf(
输出结点值
inorder_btree(p->rchild); //
输出右子树
}
}
void postorder_btree(Btree root) //
由后根序序列输出二叉树
{
Btree p=root;
if(p!=NULL)
{
postorder_btree(p->lchild); //
输出左子树
postorder_btree(p->rchild); //
输出右子树
printf(
输出结点值
}
}
3.
层次遍历输出算法
void level_btree(Btree root) //
层次遍历输出二叉树
{
Btree p;
p=(Btnode *)malloc(sizeof(Btnode)); //
申请一个新结点
p->data='@';
p->lchild=p->rchild=NULL; //
为新结点赋初值
int front, rear;
front=rear=0; //
置空队列
p=root; //
工作结点指向根节点
if(p!=NULL)
{
rear ++;
Q[rear]=p; //
结点不为空就入队
if(rear==1)
{
front=1;
Q[front]=p; //
根节点入队作为队列头结点
rear ++;
}
while(front!=rear)
{
p=Q[front]; //
队头结点出队
front ++;
.
-
-
-
-
-
-
-
-
本文更新与2021-01-25 09:47,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/565159.html