课程设计报告。
课程设计名称:数据结构课程设计。
课程设计题目:不带父亲结点的平衡二叉树的建立。
院 (系):计算机学院。
专业:计算机科学与技术。
班级:学号:
姓名。指导教师:
目录。1需求分析 2
1.1 问题描述 2
1.2问题理解 2
2系统设计 3
2.1总体方案设计 3
2.1.1数据结构设计 3
2.1.2模块划分 3
2.1.3函数表 4
2.2 系统流程图 5
2.2.1平衡二叉树的建立 5
2.2.2二叉树结点的插入 6
2.2.3左平衡操作 7
2.2.4右平衡操作 8
2.2.5树形输出 9
3 调试分析 10
3.1函数组建问题 10
3.2运行问题 10
4测试及运行结果 11
4.1主界面 11
4.2创建及结果 12
参考文献 13
附录(程序清单) 14
平衡二叉树又叫**l树,它或则是一颗空树,或则是具有下列性质的二叉:
它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过1。若将二叉树上结点的平衡因子bf定义为该结点的左子树的深度减去它的右子树的深度,则平衡二叉树上所有结点的平衡因子可能是 和 1,只要二叉树上有一个结点的平衡因子的绝对值大于 1,则该二叉树就是不平衡的。
从键盘上输入一个整数序列,建立一科平衡二叉树。
要求:1)要能够形象方便地观察树的结构;
2)要能够形象地演示树的平衡过程;
3)课程设计报告必须符合课程设计报告规范;
4)提交合格的课设报告后,经指导教师测试(验收)程序,课设完成。
按照平衡二叉树的概念,结合教科书的内容,进行二叉树的建立,并且能够完成树形的输出。
二叉树色建立较为简单,书上有介绍并且能搞完成建立,充分利用递归就能完成。而二叉树的树形输出就较为困难,需要仔细思考,充分利用二叉树的结构特点,以此为基本完成课设题目的要求。
不带父亲结点的平衡二叉树的储存结构如下:
typedef struct bitnode
int data;
int bf;//平衡因子。
struct bitnode *lchild,*rchild;//左、右孩子指针。
bitnode,*bitree;
本程序共分为两个版块,分别是信息录入、建立平衡二叉树和输出。模块划分如图2.1所示:
图2.1 平衡二叉树模块划分原理框图。
表2.1 函数表。yn
图2.2 平衡二叉树的建立。nnyy
yn图2.3 二叉树结点的插入。
图2.4左平衡操作。
图2.5 右平衡操作。
2.6树形输出。
在编写函数时,遇到了多种选择,但是往往选择的都有或多或少的问题,导致在调用时出现许多问题。经过多次调试最终编写出符合条件的函数。例如,对于函数的类型就时常搞混乱,不知道什么时候用void类型,什么时候用status类型。
除此以外,在函数调用时经常将返回值的类型弄混。这些问题给程序的编写带来了很大的困扰。
在运行时,一开始都会有许多的语法错误,比如函数定义的错误,结构体定义错误等等,还经常将“;”等符号漏掉或错用。不过经过细心修改,这些问题都得到了解决。
经过一番努力,语法错误没有了,但在算法上的错误还存在,这是比较头痛的,例如循环队列的编写、递归算法的运用等等。在循环队列的编写中,对于判空和判满把握的不好,在进队和出队过程中,队头和队尾指针的改变不满足循环队列的要求。而对于递归算法这是经常将我的头绕晕,使我不能很快的找到问题的根源,浪费了很多时间。
不过经过一次次的演算、验证,最终达到了课设题目的要求。
显示主界面,输入所要进行的操作。
按提示输入一组数,得到创建过程和结果。
1]谭浩强等。c语言程序设计[m].北京:清华大学出版社,2001
2]金永平。数据结构(c++描述)[m].北京:清华大学出版社,2005
3]严蔚敏,吴伟明。数据结构(c语言版)[m].北京清华大学出版社,2007
4]吕国英。算法设计与分析[m].天津科技大学出版社,2006
5]李兰友,turbo c实用图形程序设计[m].天津科技翻译出版社,1994
#include <>
#include <>
#include <>
#include <>
#include <>
#define lh +1
#define eh 0
#define rh -1
#define null 0
#define queue_init_size 100
#define selemtype bitree
#define status bool
typedef struct bitnode
int data;
int bf;
struct bitnode *lchild,*rchild;
bitnode,*bitree;
int depth(bitree t)
int m,n;
if(!t)
return 0;
m=depth(t->lchild);
m++;n=depth(t->rchild);
n++;if(m>n)
return m;
elsereturn n;
typedef struct
bitree *base;
int front;
int rear;
sqqueue;
status initqueue(sqqueue &q)
if(!return 0;
return 1;
status destroyqueue(sqqueue &q)
free(return 1;
status queueempty(sqqueue &q)
if(return 1;
elsereturn 0;
status enqueue(sqqueue &q,bitree &e)
if((
C语言课程课程设计
课程设计报告。课程名称 c语言程序设计 系别 xxx 专业班级 xxx班 学号 xxxxxxxxxx 姓名 xxx 课程题目 10或100以内儿童加减乘除算术游戏。完成日期 2013.6.14 19 指导老师 xxx 2013年 6月 21日。附件 一 程序模块图。二 源程序。include inc...
C语言课程设计
目录。1 c语言程序课程设计教学大纲。2 c语言程序课程设计说明书。3 c语言程序课程设计报告 模板 4 c语言程序课程设计成绩评定表。xx xx学院。课程教学大纲。课程名称 c语言程序课程设计。适用专业 课程类别 专业基础课。制订时间 2010年11月 计算机科学与技术系制。c语言程序课程设计教学...
C语言课程设计
目录。1 c语言程序课程设计教学大纲。2 c语言程序课程设计说明书。3 c语言程序课程设计报告 模板 4 c语言程序课程设计成绩评定表。珠海学院。课程教学大纲。课程名称 c语言程序课程设计。适用专业 2010级计算机科学与技术系各专业。课程类别 专业基础课。制订时间 2010年11月 计算机科学与技...