云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 实验7-查找排序的应用

实验7-查找排序的应用

  • 62 次阅读
  • 3 次下载
  • 2025/6/17 0:02:25

实验报告书

课程名: 数据结构

题 目: 查找、排序的应用实验(1) 班 级: 学 号: 姓 名:

评语: 成绩: 指导教师: 批阅时间: 年 月 日

《 数据结构 》实验报告 - 1 -

一、目的与要求

1)完整理解二叉排序树的基本概念;

2) 掌握二叉排序树的建立、查找、插入和删除算法实现思想和基本应用方法; 3)掌握二叉排序树的建立、查找、插入和删除算法实现的c语言编程技巧;

4)按照实验题目要求独立正确地完成实验内容(提交程序清单及相关实验数据与运行结果); 5)认真书写实验报告,并按时提交。

二、实验内容或题目

用C或C++语言设计实现二叉排序树的基本操作应用程序,功能包括:二叉排序树的建立,二叉排序树的查找,二叉排序树的插入,二叉排序树的删除。程序实现后,用记录关键字序列:{98,47,55,70,22,8,32,69}进行正确性验证(在建立、删除、插入操作后要给出相应二叉排序树遍历结果)。

三、实验步骤与源程序

#include \

#include #include #include

#define MAX_Node_NUM 20 #define ElemType int #define KeyType int #define InforType char #define TRUE 1 #define FALSE 0

#define EQ(a,b) ((a)==(b)) #define LT(a,b) ((a)<(b)) #define LQ(a,b) ((a)<=(b))

typedef struct data{

KeyType key; //记录的关键字

InforType *infor; //记录的其它信息指针 }Data,*DT;

typedef struct BiTNode{ Data data;

struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; BiTree p,f,s,q;

int SearchBST(BiTree T,KeyType key,BiTree f,BiTree &p){

//根指针T所指的二插排序数递归查找关键字等于key的数据元素, //查找成功时,p指向该结点,并返回TRUE,否则p指向查找路径

//上访问的最后一个结点,并返回FALSE,指针f指向T的双亲,其初始值为NULL; if(!T){p=f;return FALSE;} //查找不成功 else if(EQ(key,T->data.key)){p=T;return TRUE;} //查找成功

《 数据结构 》实验报告 - 2 -

else if(LT(key,T->data.key))return SearchBST(T->lchild,key,T,p); //在左子树中继续查找 else return SearchBST(T->rchild,key,T,p); //在右子树中继续查找

}//SearchBST

int InsertBST(BiTree &T,DT e){

//若二插排序树中不存在关键字等于e.key的数据元素时, //插入e并返回TRUE,否则返回FALSE if(!SearchBST(T,e->key,NULL,p)){

s=(BiTree)malloc(sizeof(BiTNode)); s->data=*e;s->lchild=s->rchild=NULL;

if(!p)T=s; //头记录 else if(LT(e->key,p->data.key))p->lchild=s; else p->rchild=s; return TRUE; }

else return FALSE; }//InsertBST

int Delete(BiTree &p){

//从二插排序树中删除结点p,并重接它的左右子树 if(!p->rchild){

//右子树空则只需重接它的左子树 q=p;p=p->lchild;delete q; }

else if(!p->lchild){

//左子树空则只需重接它的右子树 q=p;p=p->rchild;delete q; }

else {

//左右子树均不空 q=p;s=p->lchild;

while(s->rchild){q=s;s=s->rchild;} //找到中序遍历时p的直接前驱s p->data=s->data; //s指向被删结点的前驱

if(q!=p) q->rchild=s->lchild; //重接*q的右子树 else q->lchild=s->lchild; //重接*q的左子树 delete s; }

return TRUE; }//Delete

int DeleteBST(BiTree &T,KeyType key){

《 数据结构 》实验报告 - 3 -

//若二插排序树中存在关键字等于key的数据元素时, //则删除该数据元素结点,并返回TRUE,否则返回FALSE

if(!T)return FALSE; //不存在关键字等于key的数据元素结点 else {

if(EQ(key,T->data.key)) return Delete(T); //找到关键字等于key的数据元素结点 else if(LT(key,T->data.key))return DeleteBST(T->lchild,key); else return DeleteBST(T->rchild,key); }

}//DeleteBST

void InOrderTraverse(BiTree T){ if(!T) return ; else {

InOrderTraverse(T->lchild); cout<data.key<<\ InOrderTraverse(T->rchild); }

return; }//中序遍历

void main() {

BiTree T=NULL; DT e,c;

int i,j=0,n;

KeyType key1,key2,key3;

cout<<\在二叉排序树T上的操作\

cout<<\;

cout<<\<

cout<<\建立二叉排序树\二叉排序树中关键字的查找\ cout<<\二叉排序树中关键字的插入\二叉排序树中关键字的删除\

cout<<\中序遍历打印二叉排序树\将表置空\退出操作\ while(j!=7) {

cout<<\选择上面的数字操作项:\ cin>>j;

if(j!=1&&j!=2&&j!=3&&j!=4&&j!=5&&j!=6&&j!=7) {

搜索更多关于: 实验7-查找排序的应用 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

实验报告书 课程名: 数据结构 题 目: 查找、排序的应用实验(1) 班 级: 学 号: 姓 名: 评语: 成绩: 指导教师: 批阅时间: 年 月 日 《 数据结构 》实验报告

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com