数据结构课程设计报告

发布 2022-10-05 03:40:28 阅读 3973

题目。班级。姓名。

学号。完成日期。

目录。一、课程设计概述3

二、问题描述3

三、需求分析3

四、概要设计4

五、存储结构5

六、基本流程图6

七、详细设计6

八、调试分析17

九、运行结果。

十、参考文献。

本次数据结构课程设计完成二叉平衡树的创建、插入以及先序、中序、后序的输出操作。

实验内容:二叉平衡树的实现。

使用语言:c

编译环境:visual c++6.0

目的:1、通过不同类型的程序设计使学生学会分析数据如何组织,进一步掌握数据的几种不同的存储方式。2、 为专业课的深入学习和毕业设计打基础。

实现二叉平衡树的创建、插入、输出,并对二叉平衡进行平衡处理。

本程序在vc6.0环境用c语言编写,完成二叉平衡树的创建、插入以及先序、中序、后序的输出操作。

1、输入形式和输入值范围:

进入程序主界面后,根据用户需要的执行的工作,输入要执行工作的序号;

创建时只需要输入结点的关键字就会进行创建,如输入的关键字已经存在,则停止创建,关键字只可为整型变量;

如果已经创建过,则无法进行创建,则会进行中序、先序、后序遍历方式进行输出,然后询问用户是否重新创建;

插入结点时,需要输入结点关键字方会进行插入,如若插入关键字已存在,则停止插入;

如若插入结点造成失衡,则系统会自动进行平衡,并且告诉用户用的是何种平衡方式进行平衡,并按中序、先序、后序遍历方式进行输出;

如未先进行创建则无法进行插入;

2、输出的形式。

输出可以根据用户需要分别进行中序、先序、后序或者三者皆有的遍历方式进行输出;

如若未进行创建,则输出不存在二叉平衡树;

3、程序所能达到的功能:完成二叉平衡树的创建、插入、输出操作;

4、测试数据:

1) 按主界面提示输入要进行操作的行为的序号,如1.创建一棵二叉平衡树,然后输入各个结点的关键字,创建二叉平衡树;

2) 插入操作中如已完成创建,则输入插入的结点的关键字,如关键字存在,则会提示“插入失败,该结点已经存在”并询问是否继续插入,否则插入成功再询问是否继续插入;未完成创建,则提示“不存在二叉平衡树”并返回主界面;

3) 输出时会询问用户要按何种遍历方式,按用户爱好需求分别可进行中序、先序、后序或者三者皆有的遍历方式进行输出;

=adt=-

数据对象 d:d具有相同特性的数据元素的集合。各个数据元素均含有类型相同,可唯一标识数据元素的关键字。

数据关系 r:数据元素同属一个集合。

基本操作 p:

inordertr**erse(t);

初始条件:二叉树t存在。

操作结果:先序遍历输出二叉树。

inordertr**erse2(t)

初始条件:二叉树t存在。

操作结果:后序遍历输出二叉树。

inordertr**erse1(t)

初始条件:二叉树t存在。

操作结果:先序遍历输出二叉树。

phyz(t,j)

初始条件:二叉树t存在,二叉树指针j存在。

操作结果:查找失去平衡结点的位置并将地址返回l

right(&t,&j)

初始条件:二叉树t存在,二叉树指针j存在。

操作结果:二叉树t上与指针j有相等关键字结点进行右右式旋转。

left(&t, &j)

初始条件:二叉树t存在,二叉树指针j存在。

操作结果:二叉树t上与指针j有相等关键字结点进行左左式旋转。

right_l(&t, &j)

初始条件:二叉树t存在,二叉树指针j存在。

操作结果:二叉树t上与指针j有相等关键字结点进行右左式旋转。

left_r(&t, &j)

初始条件:二叉树t存在,二叉树指针j存在。

操作结果:二叉树t上与指针j有相等关键字结点进行左右式旋转。

sd(t)初始条件:二叉树t存在。

操作结果:返回二叉树t的深度。

pdphyz(t)

初始条件:二叉树t存在。

操作结果:若不平衡,则将不平衡点地址给j

searchbst(t, f, &p, key)

初始条件:二叉树t存在,key为关键字。

操作结果:若t中存在与key相等的元素,则指针p指向该数据元素结点,并返回true,否则指针p指向最后一个结点并返回false,指针f指向t的双亲。

insertbst(&t, key)

初始条件:二叉树t存在,key为待插入元素。

操作结果:若t中不存在与key相等元素,则插入key到t,并进行平衡。

sc(t)初始条件:二叉树t存在。

操作结果:按需要用不同遍历方法输出二叉树t

typedef struct bitnode

int data;//关键字。

int bf;//结点的平衡因子。

struct bitnode *lchild,*rchild;//左右子树指针。

bitnode,*bitree;//二叉平衡树。

#include<>

#include<>

#include<>

#include//调用清屏函数。

#define false 0

#define true 1

typedef struct bitnode

int data;//关键字。

int bf;//结点的平衡因子。

struct bitnode *lchild,*rchild;//左右子树指针。

bitnode,*bitree;//二叉平衡树。

void inordertr**erse(bitree t)//中序遍历输出二叉树。

if(t)//if

//inordertr**erse

void inordertr**erse2(bitree t)//后序遍历输出二叉树。

if(t)//if

//inordertr**erse2

void inordertr**erse1(bitree t)//先序遍历输出二叉树。

if(t)//if

//inordertr**erse1

bitree l全局二叉树指针。

void phyz(bitree t,bitree j) /平衡因子函数,查找失去平衡结点的位置的上一结点并将地址返回l

if(t)//if

//phyz

bitree right(bitree &bt,bitree &j) /右右式旋转函数。

l=null;

if(bt->data!=j->data)//判断破坏平衡点是否与根节点相同。

//ifif(j)

//ifif(l)//l为失去平衡点的结点。

//ifelse

return j;//else

//right

bitree left(bitree &bt,bitree &j) /左左式旋转函数。

数据结构课程设计报告

东莞理工学院城市学院。题目 二叉排序树 专业 计算机科学与技术 本 年级 2010级计算机科学与技术专业 1 班。个人姓名 何振江。指导教师 张娟老师 时间 2010至2011第二学期第18周 地点 实验楼615机房 东莞理工学院城市学院计算机与信息科学系制。2011年 6月。实习报告的内容。一 问...

数据结构课程设计报告

设计一个校园导游程序,为来访的客人提供信息查询服务。1 设计学校的校园平面图。选取若干个有代表性的景点抽象成一个无向带权图 无向网 以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。2 存放景点代号 名称 简介等信息供用户查询。3 为来访客人提供图中任意景点相关信息的查询。4 为来访客人提供...

数据结构课程设计报告

河北科技大学。课程设计报告。学生姓名学号。专业班级。课程名称数据结构。学年学期 2 012 2 013学年第 2 学期指导教师 黄春茹。2 0 13年 6 月。课程设计成绩评定表。一 数据结构课程设计目标。二 问题描述。三 需求分析。四 概要设计。五 详细设计。六 软件说明书 给出软件如何使用,使用...