当前位置:网站首页> 经验杂谈>正文

数据结构课设,看完你就知道了

发布于:2021-01-11 19:32:55发布者:天晴问友| 评论:0条

我的数据结构课设

操作方法

01

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char a[10][10],b[10],c[10],d[10];
typedef struct BSTNode//结构体(包括节点信息 左右儿子)
{
int key;
struct BSTNode *lchild,*rchild;
}BSTNode,*BSTree;
int InsertBST(BSTree &t,int k)
{//若二叉排序树t中没有关键字k,则插入,否则直接返回
BSTree p,f;
p=t;
while(p)                           //查找插入位置
{
if(p->key==k){
printf("树中已有该数 ");
return 0;}                 //已有k,无需插入
f=p;                         //f保存当前查找的结点
p=(k<p->key)?p->lchild:p->rchild;   //若k<p->key,在左子树上查找,否则在右子树上查找
}
p=(BSTree)malloc(sizeof(BSTNode));
p->key=k;
p->lchild=p->rchild=NULL;
if(t==NULL)
t=p;                      //如果是空树,则把输入的数给树根
else if (k<f->key)
f->lchild=p;
else f->rchild=p;
return 1;
}//InsertBST
int Delete(BSTree bst, int X)
//在二叉排序树bst上,删除其关键字为X的结点。
{
BSTree f,p=bst;
while (p && p->key!=X) {//查找值为X的结点
if (p->key>X)  {f=p; p=p->lchild;}
else{f=p; p=p->rchild;}
}
if (p==NULL)
{
printf("无关键字为%d的结点 ",X);
return 0;
}
if (p->lchild==NULL)
{  //被删结点无左子树
if (f->lchild==p) f->lchild=p->rchild;//将被删结点的右子树接到其双亲上
else f->rchild=p->rchild;
}
else   //被删结点有左子树
{
BSTree q,s;
q=p;
s=p->lchild; //s指向被删结点左子树的根
while (s->rchild !=NULL) //查左子树中最右下的结点(中序最后结点)
{
q=s;
s=s->rchild;
}
p->key=s->key; //结点值用其左子树最右下的结点的值代替
if (q==p)
p->lchild=s->lchild;//被删结点左子树的根结点无右子女
else
q->rchild=s->lchild; //s是被删结点左子树中序最后一个结点
free(s);
return 1;
}
}
void found(BSTree &p,int k)
{
while(p)                           //查找插入位置
{
if (p->key==k)
{
printf("             %s--------------------------%d ",a[p->key],p->key);
break;
}
p=(k<p->key)?p->lchild:p->rchild;   //若k<p->key,在左子树上查找,否则在右子树上查找
}
if(p->key!=k)
printf("        没有这样的章节 ");
}
void change(BSTree &p,int k)
{
int j;int t=0;
while(p)
{
if(p->key==k)
{
printf("输入更改后的章节名称 ");
scanf("%s",c);
t=1;
strcpy(a[k],c);
break;
}
p=(k<p->key)?p->lchild:p->rchild;
}
if(t==0) printf(" 没有这样的章节 ");
}
void zhongxu(BSTree T){
if(T){
zhongxu(T->lchild);
printf("            %s--------------------------%d ",a[T->key],T->key);
zhongxu(T->rchild);
}
}//中序
int main()
{
int id,k;
BSTree t=NULL;
while(1){
printf("o^o o*o o-o o^oo^o o*o o-o o^oo^o o*o o-o o^oo^o o*o o-o o^o ");
printf("o^o o*o o-o o^oo^o o*o o-o o^oo^o o*o o-o o^oo^o o*o o-o o^o ");
printf("o^o o*o o-o o^oo^o o*o o-o o^oo^o o*o o-o o^oo^o o*o o-o o^o ");
printf("o^o o*o o-o o^o   请输入所需的功能        o^o o*o o-o o^o  ");
printf("o^o o*o o-o o^o   1.插入                  o^o o*o o-o o^o  ");
printf("o^o o*o o-o o^o   2.删除                  o^o o*o o-o o^o  ");
printf("o^o o*o o-o o^o   3.输出目录              o^o o*o o-o o^o  ");
printf("o^o o*o o-o o^o   4.查询                  o^o o*o o-o o^o  ");
printf("o^o o*o o-o o^o   5.更改目录              o^o o*o o-o o^o  ");
printf("o^o o*o o-o o^o   6.退出                  o^o o*o o-o o^o  ");
printf("o^o o*o o-o o^oo^o o*o o-o o^oo^o o*o o-o o^oo^o o*o o-o o^o ");
printf("o^o o*o o-o o^oo^o o*o o-o o^oo^o o*o o-o o^oo^o o*o o-o o^o ");
scanf("%d",&id);
switch(id)
{
case 1:{
printf("-----------------请输入要插入的目录页数:------------------ ");
scanf("%d",&k);
printf("-----------------请输入要插入的目录名称:------------------ ");
scanf("%s",a[k]);
InsertBST(t,k);
break;
}
case 2:{
printf("-----------------请输入需要删除的数:------------------------ ");
scanf("%d",&k);
Delete(t,k);
break;
}
case 3:{
printf("                         目录 ");
zhongxu(t);
break;
}
case 4:
{
int i;int g=0;
printf("--------------输入章节名称 ");
scanf("%s",b);
for(i=0;i<10;i++)
{
if(strcmp(a[i],b)==0)
{
found(t,i);
g=1;break;
}
}
if(g==0)printf("--------没有这样的章节- ");
break;
}
case 5:
{int i;int g=0;
printf("---------------输入更改章节名称 ");
scanf("%s",d);
for(i=0;i<10;i++)
{
if(strcmp(a[i],d)==0)
{
change(t,i);g=1;
break;
}
}
if(g==0)printf("--------没有这样的章节- ");
break;
}
case 6:
exit(0);
break;
default:
printf("输入错误!");
break;
}
}
return 0;
}

好了,以上就是大致内容了,(END)

相关经验+更多
  • 武汉越王勾践剑交通卡怎么获得

    武汉最近推出了立体交通卡,名叫“越王勾践剑”,光听名字就觉得很霸气。相信很多小伙伴想获得,接下来小编就为你带来武汉越王勾践剑交通卡购买的方法。武汉越王勾践剑交通卡怎么获得1、微信搜索“武汉通行”,点击武汉通行公众号2、点击进入公众号3、点击框中所指位置4、进入文章页面,找到立即购买点击就能下单了5、使用须知想要第一时间了解玩机技巧、app教程吗?那么关注天晴下载准没错,网站每天都会分享热门的教程哦

  • 苹果2021秋季发布会新品有哪些

    苹果2021秋季发布会有哪些新品?万众期待的发布会在本月15日将会举行,iPhone13的推出大家早就已经了解了,那么还有哪些新品会出现呢?接下来小编带来了详细全面的新品介绍,别错过了哦!苹果2021秋季发布会新品有哪些时间:2021.9.15地点:总部 Apple Park直播网址:请点击新产品:IPhone 13 系列此前对于这个系列早就已经官宣过了,推陈出新,不论是从外观、内部功能、续航能力

  • 小米商城学生认证怎么弄

    近日小米商城上线了感恩活动,只要是符合条件的大学生就可以获得相关的福利。那么我们该如何证明自己的学生身份呢?方法还是比较多样的,有需要的可以看看接下来的内容哦!小米商城学生认证怎么弄学信网认证登录自己的学信网,输入相关的密码,然后找到自己的大学生在线验证报告即可。或者登录小米商城,点击学生,然后输入姓名、身份证号、手机号和学信网的验证码也可以哦!输入验证码,然后等待工作人员验证成功以后就可以领取该

  • 华为个性化后壳怎么定制

    我们很多人在购买手机时都会看中后壳颜色,喜欢不同颜色的用户有时可能会因为颜色不全,而放弃购买,华为新推出了“个性化后壳”服务,可以满足用户们更换后壳的需要,实现颜色自选,快来看看后壳支持哪些型号吧。华为个性化后壳服务是什么昨日有网友发现,在华为官网上新推出了“个性化后壳”服务项目,对于很多人来说手机后壳非常容易摔坏,或者是自己看腻了后壳颜色,可以通过自费进行后壳更换,再也不用自己买后膜贴在手机上了

经验评论

评论列表(条(包括审核中))