c++-这个程序麻烦各位大神帮忙看下错在哪里了,谢谢

问题描述

这个程序麻烦各位大神帮忙看下错在哪里了,谢谢

#include
#include
#include
typedef int ElemType;
typedef struct Student
{
int num;
char name[20];
char birthday[20];
char tel[20];
}Student;
typedef struct BiTNode
{
struct Student stu;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
int SearchBST(BiTree T,int num,BiTree f,BiTree *p,char name[])
{
if(!T)
{
*p = f;
return 0;
}
else
{
if(!strcmp(name,T->stu.name))
{
*p = T;
return 1;
}
else
{
if(num < T->stu.num)
{
return SearchBST(T->lchild,num,T,p,name);
}
else
{
return SearchBST(T->rchild,num,T,p,name);
}
}
}
}
void ProOrderTraverse(BiTree T)
{
if(T==NULL)
{
return;
}
else
{
printf("name: ");
printf("num: ");
printf("birthday ");
printf("tel ");
printf("n");
printf("%-10s",T->stu.name);
printf("%-10d",T->stu.num);
printf("%-10s",T->stu.birthday);
printf("%-10s",T->stu.tel);
printf("n");
ProOrderTraverse(T->lchild);
ProOrderTraverse(T->rchild);
}
}
int InsertBST(BiTree *T,int num,char name[],char birthday[],char tel[])
{
BiTree p,s;
if(!SearchBST(*T,num,NULL,&p,name))
{
s = (BiTree)malloc(sizeof(BiTNode));
s->stu.num= num;
strcpy(s->stu.name,name);
strcpy(s->stu.birthday,birthday);
strcpy(s->stu.tel,tel);
s->lchild = s->rchild =NULL;
if(!p)
{
*T = s;
}
else
{
if(num<(p->stu.num))
{
p->lchild = s;
}
else
{
p->rchild = s;
}
}
return 1;
}
else
{
return 0;
}
}
void InsertStudent(BiTree *T)
{
int num;
char name[20];
char birthday[20];
char tel[20];
printf("Insert name:n");
scanf(" %s",&name);
printf("Insert num:n");
scanf(" %d",&num);
printf("Insert birthday:n");
scanf(" %s",&birthday);
printf("Insert tel:n");
scanf(" %s",&tel);
InsertBST(T,num,name,birthday,tel);
}
int Delete(BiTree *T,char name[10])
{
if(!*T)
{
return 0;
}
else
{
if(!strcmp(name,(*T)->stu.name))
{
return Delete(*T);
}
else
{
return Delete(&(*T)->lchild,name);
return Delete(&(*T)->rchild,name);
}
}
}
int Delete(BiTree *p)
{
BiTree q,s;
if((*p)->rchild == NULL)
{
q = *p;
*p = (*p)->lchild;
free(q);
}
else
{
if((*p)->lchild == NULL)
{
q = *p;
*p = (*p)->rchild;
free(q);
}
else
{
q=*p;
s=(*p)->lchild;
while(s->rchild)
{
q = s;
s = s->rchild;
}
(*p)->stu.num=s->stu.num;
strcpy((*p)->stu.name,s->stu.name);
strcpy((*p)->stu.birthday,s->stu.birthday);
strcpy((*p)->stu.tel,s->stu.tel);
if(q != *p)
{
q->rchild = s->lchild;
}
else
{
q->lchild = s->lchild;
}
free(s);
}
}
return 1;
}
void DeleteStudent(BiTree *T)
{
char name[20];
printf("Delete the name:n");
scanf(" %s",&name);
Delete(T,name);
}
int Alter(BiTree *T,char name[10])
{
if(!*T)
{
return 0;
}
else
{
if(!strcmp(name,(*T)->stu.name))
{
return Alter(*T);
}
else
{
return Alter(&(*T)->lchild,name);
return Alter(&(*T)->rchild,name);
}
}
}
int Alter(BiTree *p)
{
int num;
char name[20];
char birthday[20];
char tel[20];
printf("name: ");
printf("num: ");
printf("birthday ");
printf("tel ");
printf("n");
printf("%-10s",(*p)->stu.name);
printf("%-10d",(*p)->stu.num);
printf("%-10s",(*p)->stu.birthday);
printf("%-10s",(*p)->stu.tel);
printf("n");
printf("Alter the name to:n");
scanf(" %s",&name);
printf("Alter the num to:n");
scanf(" %d",&num);
printf("Alter the birthday to:n");
scanf(" %s",&birthday);
printf("Alter the tel to:n");
scanf(" %s",&tel);
(*p)->stu.num=num;
strcpy((*p)->stu.name,name);
strcpy((*p)->stu.birthday,birthday);
strcpy((*p)->stu.tel,tel);
return 1;
}
void AlterStudent(BiTree *T)
{
char name[20];
printf("Alter the name:n");
scanf(" %s",&name);
Alter(T,name);
}
int main()
{
int i;
BiTree T=NULL;
while(1)
{
printf("1.Show studentn");
printf("2.Insert studentn");
printf("3.Delete studentn");
printf("4.Alter studentn");
do
{
scanf(" %d",&i);
}
while(i!=1&&i!=2&&i!=3&&i!=4);
system("clear");
switch(i)
{
case 1:
{
ProOrderTraverse(T);
break;
}
case 2:
{
ProOrderTraverse(T);
InsertStudent(&T);
break;
}
case 3:
{
ProOrderTraverse(T);
DeleteStudent(&T);
ProOrderTraverse(T);
break;
}
case 4:
{
ProOrderTraverse(T);
AlterStudent(&T);
break;
}
default:
{
break;
}
}
}
return 0;
}

解决方案

不是我疯了,那一定就是你疯了.

解决方案二:

调试程序,如果程序蹦了,点重试,看看断在哪一行,看看内存中变量的数据是否正常

解决方案三:

程序还没看 不知道你include的是什么

解决方案四:

程序还没看 不知道你include的是什么

解决方案五:

程序还没看 不知道你include的是什么

解决方案六:

程序还没看 不知道你include的是什么

时间: 2024-08-17 20:14:24

c++-这个程序麻烦各位大神帮忙看下错在哪里了,谢谢的相关文章

android-Android程序切到桌面软件崩溃,麻烦版主大神帮忙看下是什么原因

问题描述 Android程序切到桌面软件崩溃,麻烦版主大神帮忙看下是什么原因 这是日志 解决方案 /** 捕捉按下返回键操作 */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO 按两次返回键退出应用程序 if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { // 判断间隔时间 大于2秒就退出应用 if

雅虎财经数据-麻烦各位大神给看下下面这段代码,运行不起来。请帮忙看下是什么原因(是在Python上运行的)

问题描述 麻烦各位大神给看下下面这段代码,运行不起来.请帮忙看下是什么原因(是在Python上运行的) from matplotlib.finance import quotes historical_yahoo from datetime import date import pandas as pd today=date.today() start=(today.year-1,today.month,today.day) quotes=quotes_historical_yahoo('AXP

c++-初学C++ 一个小程序 求大神帮忙看下

问题描述 初学C++ 一个小程序 求大神帮忙看下 //分秒显示函数 #include using namespace std; //全局引用std命名空间 void showTime(int ,int); int main() { int hours =0 , mins = 0;//定义且初始化分 和秒 cout << "Input the hour "; cin >> hours; cout << "Input the mins &quo

weblogic11程序部署报错,大神帮忙看下

问题描述 weblogic11程序部署报错,大神帮忙看下 安装时报错,错误如下: - 错误 激活更改期间出错, 有关详细信息, 请查看日志. - 错误 weblogic.application.ModuleException: - 错误 com.icitic.hrms.doc.ucc.impl.DocBrowseUCCImpl - 成功 已成功安装布署. 状态显示为失败. 解决方案 你这个信息量太少太少了,,,

java-页面显示消息重复,求大神帮忙看下是哪里原因

问题描述 页面显示消息重复,求大神帮忙看下是哪里原因 这是页面截图 下面是两个代码截图调用的是这个方法 解决方案 导致重复的原因倒推下, 什么情况才会重复 1--数据库层面 根据你的表头那几项信息看应该是联合查询了,不知道你使用的是左外连接还是哪种 如果有检查你这个关系对不对,会不会出现主表有信息字表无信息的情况 2--如果sql关系正确那么你看看会不会有重复数据,你进行了distinct没有 至于为什么会出现重复数据也思考下 3--如果db检查没有问题的话,那就是你写的程序了. 其实你显示页面

jsp-求教:哪位大神帮忙看下代码,本人小白,实在不知道哪里有问题!!

问题描述 求教:哪位大神帮忙看下代码,本人小白,实在不知道哪里有问题!! 代码如下,登陆页面,把java逻辑放到了后台页面上,运行的时候没有报错,但是不跳转.测试账号密码正确不跳转因为没写,但是测试账号密码错误的情况下也不跳转. <%@ page language=""java"" import=""java.util.*java.sql.*info.DataBase"" pageEncoding=""

html-插入jstl标签报错,求大神帮忙看下,网上解决方案都是错的

问题描述 插入jstl标签报错,求大神帮忙看下,网上解决方案都是错的 com.neusoft.unieap.action.EAPActionServlet.process(EAPActionServlet.java:814) >> org.apache.jasper.JasperException: Validation error messages from TagLibraryValidator for c null: org.xml.sax.SAXParseException: Attr

Navicat出现这个报错 哪位大神帮忙看下

问题描述 Navicat出现这个报错 哪位大神帮忙看下 今天重装了C盘之后 打开navicat就这样了 本人小白 不明白这个报错是什么意思 解决方案 是我的mysql出现问题了吗 如果是 我已经重新安装mysql好几次了 还是有这样的错误 不明白 解决方案二: 没遇到过这问题,度娘吧

编程-跪求大神帮忙看下代码,错了不晓得怎么改哦

问题描述 跪求大神帮忙看下代码,错了不晓得怎么改哦 switch (uMsg) { case WM_CHAR: char szChar[20]; sprintf(_T(szChar),_T( "char code is %d"), wParam); 错误 1 error C2065: "LszChar": 未声明的标识符 IntelliSense: "const wchar_t *" 类型的实参与 "const char *"