C语言课程设计

发布 2022-09-30 16:47:28 阅读 2431

课程设计报告。

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

课程设计题目:不带父亲结点的平衡二叉树的建立。

院 (系):计算机学院。

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

班级:学号:

姓名。指导教师:

目录。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月 计算机科学与技...