数据结构课程设计之二叉排序树的实现.docx
- 文档编号:6428492
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:17
- 大小:292.63KB
数据结构课程设计之二叉排序树的实现.docx
《数据结构课程设计之二叉排序树的实现.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计之二叉排序树的实现.docx(17页珍藏版)》请在冰豆网上搜索。
数据结构课程设计之二叉排序树的实现
中南大学信息科学与工程学院
课题名称:
二叉排序树的实现
信息科学与工程学院
通信工程
学
班
学
姓
院:
级:
号:
名:
指导老师:
漆华妹
完成日期——2014年7月10日
数据结构课程设计
一、引言
数据结构是一门理论性强、思维抽象、难度较大的课程,是基础课和专业课之间的桥梁。
该课程的先行课程是计算机基础、程序设计语言、离散数学等,后续课程有操作系统、编译原理、数据库原理、软件工程等。
通过本门课程的学习,我们应该能透彻地理解各种数据对象的特点,学会数据的组织方法和实现方法,并进一步培养良好的程序设计能力和解决实际问题的能力。
数据结构是计算机科学与技术专业的一门核心专业基础课程,在该专业的课程体系中起着承上启下的作用,学好数据结构对于提高理论认知水平和实践能力有着极为重要的作用。
学习数据结构的最终目的是为了获得求解问题的能力。
对于现实世界中的问题,应该能从中抽象出一个适当的数学模型,该数学模型在计算机内部用相应的数据结构来表示,然后设计一个解此数学模型的算法,再进行编程调试,最后获得问题的解答。
实习课程是为了加强编程能力的培养,鼓励学生使用新兴的编程语言。
相信通过数据结构课程实践,无论是理论知识,还是实践动手能力,我们都会有不同程度上的提高。
二、课程设计目的
本课程是数据结构课程的实践环节。
主要目的在于加强学生在课程中学习的相关算法和这些方法的具体应用,使学生进一步掌握在C++或其他语言中应用这些算法的能力。
通过课程设计题目的练习,强化学生对所学知识的掌握及对问题分析和任务定义的理解。
三、问题描述及基本要求
二叉排序树的实现:
用顺序和二叉链表作存储结构
1)以回车(‘\n’)为输入结束标志,输入数列L,生成一棵二叉排序树T;
2)对二叉排序树T作中序遍历,输出结果;
3)输入元素x,查找二叉排序树T,若存在含x的结点,则删除该结点,并作中序遍历(执行操作2);否则输出信息“无x”。
一、问题分析和任务定义
在设计之前,首先应该充分地分析和理解问题,明确问题要求做什么?
限制条件是什么?
对所需完成的任务作出明确的回答。
二、系统设计
系统设计分为逻辑设计和详细设计两步。
逻辑设计指的是,对问题描述中的操作对象定义相应的数据类型,并按照以数据结构为中心的原则划分模块,定义软件模块结构图;详细设计则为定义相应的存储结构,并写出各函数模块的伪码算法。
三、编码实现和调试
四、软件模块结构图
五、程序设计流程图(设计思想)
无结点x
存在含x的结点,则删除该结点,并作中序遍历
输入元素x,查找二叉排序树T
详细设计思想:
建立二叉排序树采用边查找边插入的方式。
查找函数采用递归的方式进行查找。
如果查找到相等的则插入其左子树。
然后利用插入函数将该元素插入原树。
对二叉树进行中序遍历采用递归函数的方式。
在根结点不为空的情况下,先访问左子树,再访问根结点,最后访问右子树。
删除结点函数,采用边查找边删除的方式。
如果没有查找到,进行提示;如果查找到结点则将其左子树最右边的节点的数据传给它,然后删除其左子树最右边的节点。
六、源代码
1、用二叉链表存储结构实现
#include
typedefintKeyType;
typedefcharElemType[10];
typedefstructtnode
{
KeyTypekey;
ElemTypedata;
structtnode*lchild,*rchild;
}BSTNode;
voidBSTdisp(BSTNode*b);
BSTNode*BSTSearch(BSTNode*bt,KeyTypek)
{
BSTNode*p=bt;
while(p!
=NULL&&p->key!
=k)
{
if(k
p=p->lchild;/*沿左子树查找*/
else
p=p->rchild;/*沿右子树查找*/
}
return(p);
}
intBSTInsert(BSTNode*&bt,KeyTypek)
{
BSTNode*f,*p=bt;
while(p!
=NULL)
{
if(p->key==k)
return(0);
f=p;/*f指向*p结点的双亲结点*/
if(p->key>k)
p=p->lchild;/*在左子树中查找*/
else
p=p->rchild;/*在右子树中查找*/
}
p=newBSTNode;/*建立新结点*/
p->key=k;
p->lchild=p->rchild=NULL;
if(bt==NULL)/*原树为空时,*p作为根结点插入*/
bt=p;
elseif(k
f->lchild=p;/*插入*p作为*f的左孩子*/
else
f->rchild=p;/*插入*p作为*f的右孩子*/
return
(1);
}
/*BSTNode*CreatBST(KeyTypeA[],intn)
//由数组中的关键字建立一棵二叉排序树
{
BSTNode*bt=NULL;//初始时bt为空树
inti=0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 二叉排序树 实现
![提示](https://static.bdocx.com/images/bang_tan.gif)