数据结构课程设计

发布 2022-10-05 01:06:28 阅读 3950

课程设计说明书。

设计名称: 数据结构课程设计

题目: 设计五 :二叉树的相关操作

学生姓名。专业: 计算机科学与技术

班级。学号。

指导教师。日期: 2012 年 3 月 5 日。

课程设计任务书。

计算机科学与技术专业年级班。

一、 设计题目。

设计五二叉树的相关操作。

二、 主要内容。

建立二叉树,并对树进行相关操作。

三、 具体要求。

1)利用完全二叉树的性质建立一棵二叉树。(层数不小于4层)

2)统计树叶子结点的个数。

3)求二叉树的深度。

4)能够输出用前序,中序,后序对二叉树进行遍历的遍历序列。

四、 进度安排。

依照教学计划,课程设计时间为:2周。

本设计要求按照软件工程的基本过程完成设计。建议将时间分为三个阶段:第一阶段,根据题目要求,确定系统的总体设计方案:

即系统包括哪些功能模块,每个模块的实现算法,并画出相应的流程图.同时编写相应的设计文档;第二阶段,根据流程图编写程序**并调试,再将调试通过的各个子模块进行集成调试;第三阶段,归纳文档资料,按要求填写在《课程设计说明书》上,并参加答辩。三个阶段时间分配的大概比例是:35:

45: 20。

五、 完成后应上交的材料。

本课程设计要求按照学校有关规范的要求完成,在课程设计完成后需要提交的成果和有关文档资料包括课程设计的说明书,课程设计有关源程序及可运行程序(含运行环境)。其中课程设计说明书的格式按学校规范(见附件),其内容不能过于简单,必须包括的内容有:

1、课程设计的基本思想,系统的总功能和各子模块的功能说明;

2、课程设计有关算法的描述,并画出有关算法流程图;

3、源程序中核心**的说明。

4、本课程设计的个人总结,主要包括以下内容:

(1) 课程设计中遇到的主要问题和解决方法;

(2) 你的创新和得意之处;

(3) 设计中存在的不足及改进的设想;

4) 本次课程设计的感想和心得体会。

5、源**要求在关键的位置有注释,增加程序的可读性。程序结构和变量等命名必须符合有关软件开发的技术规范(参见有关文献)。

此外,填写在《课程设计说明书》中,必须根据要求认真填写课程设计任务书,排版要求整齐,美观,打印后与课程设计说明书封面一起装订好,并于本学期第6周星期1下午前交到致用楼5楼。

六、 总评成绩。

指导教师签名日期年月日。

系主任审核日期年月日。

一、 总体思想6

1.1基本思想6

1.2系统的总功能6

1.3各子模块的功能说明6

1.3.1 结构体部分6

1.3.2主函数部分6

1.3.3子函数部分6

二、具体内容6

2.1 对应模块的算法流程图6

2.1.1总的设计思想流程图7

2.1.2创建二叉树函数流程图7

2.1.3统计叶子数函数流程图8

2.1.4计算二叉树深度函数流程图8

2.1.5前序遍历函数流程图9

2.1.6中序遍历函数流程图9

2.1.7后序遍历函数流程图10

2.2课程设计的算法描述10

2.3程序运**况截图16

2.3.1程序运行的目录以及创建二叉树操作16

2.3.2计算二叉树叶子数和深度的相关操作17

2.3.3对二叉树分别进行前序,中序和后序遍历的情况:……18

2.3.4选择错误及结束操作的运**18

2.4程序备注19

三、源程序中核心**的说明19

3.1总设计思想说明19

3.2创建二叉树函数说明19

3.3统计叶子数函数说明20

3.4计算二叉树深度函数说明20

3.5前序遍历函数说明20

3.6中序遍历函数说明20

3.7后序遍历函数说明21

四、个人总结21

4.1课程设计中遇到的问题21

4.2对应问题的解决办法22

4.3程序中的得意之处23

4.4设计中存在的不足及改进方法23

4.5设计中的感想以及心得体会30

一、 总体思想。

1.1基本思想。

基本思想是利用完全二叉树的性质,用数组去创建一棵完全二叉树,再用函数调用去调用去调用相应的函数实现选项对应的操作。

1.2系统的总功能。

本系统的主要功能是为用户提供一个选择操作的菜单目录,并且实现对应选项的功能,具体功能有如下几点:

1、创建二叉树。

2、统计叶子个数。

3、求二叉树的深度。

4、前序遍历输出列表。

5、中序遍历输出列表。

6、后序遍历输出序列。

7、退出操作

1.3各子模块的功能说明。

本程序主要分为三大子模块:

1.3.1 结构体部分。

bitnode的结构体包含权值,左孩子存放地址和右孩子存放地址,是一个为了存放二叉树结点信息所创建的结构体。

1.3.2主函数部分。

该模块主要是实现对其他操作的函数调用的功能。

1.3.3子函数部分。

部分是实现对应子函数的操作,有:创建二叉树、统计叶子个数、求二叉树的深度、前序遍历输出列表、中序遍历输出列表和后序遍历输出序列的功能。

二、具体内容。

2.1对应模块的算法流程图。

2.1.1总的设计思想流程图。

2.1.2创建二叉树函数流程图。

2.1.3统计叶子数函数流程图。

2.1.4计算二叉树深度函数流程图。

2.1.5前序遍历函数流程图。

2.1.6中序遍历函数流程图。

2.1.7后序遍历函数流程图。

2.2课程设计的算法描述。

#include<>

#include<>

#define maxsize 1000

struct bitnode

printf("开始输入权值:");

for(i=1;i<=j;i=i+1)//权值的录入。

printf("成功创建二叉树");

int le**es()/统计叶子个数函数。

int l,i;

l=0;for (i=1;tree[i].c!=null;i++)

//计算二叉树结点的个数。

if ((l%2))

//判断结点的奇偶性从而计算叶子的个数。

elsereturn(l/2);

int deep()/求二叉树的深度。

int d,i,sum;

sum=1;

for (i=1;tree[i].c!=null;i++)

//计算二叉树结点的个数。

for (d=1;sum<=i;d++)

//求出二叉树的深度。

return(d-1);

void qian(int a)//前序遍历输出列表。

if (tree[a].c!=null)

//判断当前结点是否有值,若有执行如下操作,若无则返回上一层。

elsereturn;

void zhong(int a)//中序遍历输出列表。

if (tree[2*a].c!=null)

//首先判断当前结点的左孩子是否为空,不是就进行递归调用,用当前结点的左孩子作根节点重复当前函数的操作。

printf("%d,",tree[a].c);

//输出当前结点的权值。

if (tree[2*a+1].c!=null)

//判断当前结点的右孩子是否为空,不是就进行递归调用,用当前结点的右孩子作根节点重复当前函数的操作。

数据结构课程设计

课程设计说明书 题目哈夫曼编码问题的设计和实现。课程名称数据结构课程设计。院 系 部 中心。专业。班级。学生姓名。学号。设计地点。指导教师。设计起止时间 2008 年6月 2日至 2008 年 6月 6 日。目录。1 问题描述 2 1.1 题目内容 2 1.2 基本要求 2 1.3 测试数据 2 2...

数据结构课程设计

数据结构 课程设计。实验报告。学院 信息工程学院。班级 姓名 学号 指导老师 题目2 一元多项式的计算。1 实验目的。1 掌握链表的灵活运用 2 学习链表初始化和建立一个新的链表 3 知道怎样去实现链表删除结点操作与插入结点 4 理解链表的基本操作 包括数据域数据的相加 并能灵活运用。2 实验内容。...

数据结构课程设计

班级 信计 1102 姓名 李娜娜。学号 1108060209 设计日期 2013.07.15 西安科技大学计算机学院 1.实验题目 编制一个演绎扫雷游戏的程序。2.问题描述。做一个n x m的扫雷游戏,每个方格包含两种状态 关闭 closed 和打开 opened 初始化时每个方格都是关闭的,一个...