版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构:查找子系统
*题目:编写循序查找程序
*编写二分查找程序
♦编写建立二叉排序树的程序
*编写在二义排序树上的查找、输入、删除结点的程序
*编写二叉排序树的中序输出的程序
*设计一个选择式菜单,一级菜单形式如下:
*查找子系统
**********************************
**1……顺序查找*
**2-一一二分查找*
**3……二叉排序树*
**0-------返回*
**********************************
*请选择菜单号(0-3):
*二叉排序树的二级菜单如下:
*二义排序树
*************************************
**1……更新二叉排序树*
**2--查找站点*
*»3——插入结点*
**4……删除结点*
**5----中序输出排序树*
*♦0——返回*
*************************************
*请选择菜单号(0--5):
*/
stdio.he<stdio.h>
string.h<string.h>
stdlib.h<stdlib.h>
#defineSEARCHMAX30
typedefstructnode
(
inttrData;〃根节点
structnode*lchild;〃左子树
structnode*rchild;〃右子树
JBtNode,*pBtNode;
voidseqSearch();
voidbinSearchO;
voidbtSearch();
pBtNodecreateBT();
voidsearchBT(pBtNodeT,intk);
voidinsBT(pBtNode*T,intk);
voiddelBT(pBtNode*T,intk);
第1页共9页
数据结构:查找子系统
voidinorderBT(pBtNodeT);
voidmain()
intchoice,k=1;
while(k)
printf("\n查找子系统\n");
II************京*****,*****,********
printf("*1---…顺序查找*\n");
printfC*2—…二分查我*\n");
printfC*3—一二又排序树
printfC*0—一返回
printf(”*********************************\n”).
prints请选择菜单号(0--3):");
fflush(stdin);
scanf("%d”,&choice);
switch(choice)
case1:
5eqSearch();
break;
case2:
binSearch();
break;
case3:
btSearch{);
break;
case0:
k=0;
break;
default:
printf("输入错误,请重新输入。");
getchar();
k=l;
break;
)
)
)
voidseqSearchO〃顺序杳找
(
inta[SEARCHMAX],x,y,i;
charch;
printf("建立一个整数的顺序表(以-1结束):");
for(i=0;i<SEARCHMAX;i++)
第2页共9页
数据结构:查找子系统
scanf("%d",&a[i]);
getchar();
if(a[i]==・l)〃记录结束位置,结束循环
(
y=i;
break;
)
}
printf("是否需要查找(Y/N):");
scanf("%c",&ch);
while(ch=='y'||ch==Y)
(
printf(“请输入要查找的数据:\n");
scanf("%d",&x);
getchar();
i=O;〃找到数组的结束位置。
while(i<y-l&&a[i]!=x)〃找到要查找的数据的位置
(
i++;
}
if(i==-1)〃没找到
(
printf("对不起,没有找到。\n");
)
else
(
printf("该数据在第%(1个位置上。\n",i+1);
)
printf("是否继续查找(Y/N):");
scanf(''%c",&ch);
)
)
voidbinSearch()〃二分查找
{
intb[SEARCHMAX],i,y,x,low,mid,high,n;
charch;
printf("建立递增有序的查找顺序表(以-1结束):\n");
for(i=0;kSEARCHMAX;i++)
(
scanf("%d",&b[i]);
getchar();
if(b[i]==-l)〃记录结束位置,结束循环
第3页共9页
数据结构:查找子系统
printf("共进行%d次比较。\n';n);
)
printf("是否需要查找(Y/N):");
scanf("%c",&ch);
}
)
voidbtSearch()〃二叉排序树
{
intchoice,x,I=1;
pBtNodeT;
printf("建立•一棵二叉排序树存储\n");
T=createBT();
getchar();
while(I)
(
printf("\n二叉排序树\n");
printf(M***********************************\i
printf("*1一一更新二叉排序树*\n");
printf("*2--.一查找结点*\n");
printf("*3——插入结点*\n"),
printf("*4一一删除结点*\n");
printf("*5-一一中序输出排序树*\n");
printfC*0——返回♦\n");
printf(”************************************
printf("请选择菜单号(0-5):
fflush(stdin);
scanf("%d",&choice);
switch(choice)
(
case1:
T=createBT();
break;
case2:
printf("请愉入要查找的数据:");
scanf("%d",&x);
getchar();
searchBT(T,x);
break;
case3:
printf(”请输入要插入的数据:");
scanf("%d",&x);
insBT(&T,x);
break;
case4:
第5页共9页
数据结构:查找子系统
printf("请输入要删除的数据:”);
scanf("%d",&x);
delBT(&T,x);
break;
case5:
inorderBT(T);
break;
case0:
1=0;
break;
default:
printf("输入错误,请重新输入。
getchar();
1=1;
break;
)
}
)
pBtNodecreateBT()〃建立二叉树
(
pBtNodeT;〃声明指针
intx;
T=NULL;
printf("请输入一个整数(输入。结束):
fflush(stdin);
scanf("%d",&x);
getchar();
wh加(x)〃输入的数据非零时
(
insBT(&T,x);〃二叉树中插入数据
printf("请输入下一个整数(输入0结束):");
fflush(stdin);
scanf(”%d",&x);
getchar();
)
returnT;〃返回指针
)
voidsearchBT(pBtNodeT,intk)〃杳找二叉树结点
(
pBtNodef=T;
while(f)
(
if(f->trData==k)〃判断是否找到该数据
第6页共9页
数据结构:查找子系统
printf("已找到数据。\n");
return;
)
f=(k<f->trData)?f->lchild:f->rchild;〃判断卜一个查找的位置
}
printf("没有找到数据。\n");
)
voidinsBT(pBtNode*T,intk)〃插入二叉树结点
(
pBtNodef,p;
p=(*T);〃指向指针的指针
while(p)〃当结点不为空
(
if(p->trData==k)
(
printf("树中已有%d,不需要插入。k);
return;
)
else
(
f=p;
P=(k<p->trData)?p->lchild:p->rchild;〃判断插入的数据的位置
)
}
p=(BtNode*)malloc(sizeof(BtNode));〃分配空间
p->trData=k;
p->lchild=p->rchild=NULL;
if((*T)==NULL)
(
(*T)=p;
}
else
(
if(k<f->trData)
(
f->lchild=p;
)
else
(
f->rchild=p;
)
)
)
voiddelBT(pBtNode*T,intk)〃删除二叉树结点
第7页共9页
数据结构:查找子系统
pBtNodep,q,child,parent=NULL;
P=*T;
while(p)〃找到输入的数据的位置
(
if(p->trData==k)
(
break;
)
parent=p;〃记录上一个结点
p=(k<p->trData)?p->lchild:p->rchild;
}
if(!p)〃没有找到位置
(
printf(“没有找到你要删除的数据结点。\n");
return;
}
q=P;
if(q->lchild&&q->rchil
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教版科学六年级上册第二章第3课《气体在人体中的进出》课件1
- 《第11章多彩的物质世界》复习课件
- 通信原理第7版第1章课件樊昌信版
- 资金管理风险防控管理制度
- 重点人群急救技能培训实施方案
- 实验室高温防护专项培训课件
- 基层公共卫生协管员轮训实施方案
- 水利工程竣工验收管理规程
- 生物质颗粒燃料项目可行性研究报告
- 家庭急救知识普及实施方案
- 2026年新教材人教版九年级上册英语期中复习:Unit 1-4+期中5套测试卷汇编(含答案)
- 河北省邯郸市2025-2026学年高一上学期期中联考语文试题及答案
- ESC 2026新版心力衰竭管理指南精读
- 2024+ESO指南:卵圆孔未闭患者卒中后诊断与治疗
- 2026智联招聘笔试题库及答案
- 2026版《药物临床试验质量管理规范》GCP考试题库(含标准答案+解析)
- EDA技术及应用项目教程 教学大纲
- 中医护理评估
- 2025年度中国展览数据统计报告
- 2026年中考作文押题指导
- 全新版大学英语视听说教程1答案
评论
0/150
提交评论