2 baidu 24427837 baidu_24427837 于 2014.12.11 18:40 提问

这个程序麻烦各位大神帮忙看下错在哪里了,谢谢
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 student\n");
printf("2.Insert student\n");
printf("3.Delete student\n");
printf("4.Alter student\n");
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;
}

6个回答

happyparrot
happyparrot   Ds   Rxr 2014.12.12 12:54

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

lx624909677
lx624909677   Ds   Rxr 2014.12.12 13:40

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

Learning__exe
Learning__exe   2014.12.14 13:57

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

Learning__exe
Learning__exe   2014.12.14 13:57

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

baidu_24427837
baidu_24427837 为什么?
3 年多之前 回复
Learning__exe
Learning__exe   2014.12.14 13:57

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

baidu_24427837
baidu_24427837 <stdio.h>
3 年多之前 回复
Learning__exe
Learning__exe   2014.12.14 13:57

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
众数的程序(使用到快速排序)
以下这个众数的程序,帮忙看下哪里出错了?
国际标准智商测试题 (转载)
​国际标准智商测试题 (转载)     智商,就是IQ(Intelligence Quotient的简称),通俗地可以理解为智力,是指数字、空间、逻辑、词汇、创造、记 忆等能力,它是德国心理学家施特恩在1912年提出的。智商表示人的聪明程度:智商 越高,则表示越聪明。想检验自己的智商是多少吗?这并不困难,以下就是一例国内 较权威的IQ测试题,请在30分钟内完成(30题),之后你就
《SQL入门经典》学习笔记
第一部分  SQL概念综述 第1章  欢迎来到SQL世界 1.4.1 表命名标准 表的名称以_TBL作为后缀,表的索引以_INX为后缀 1.4.3 表的构成 字段是表里的一列,记录是表里的一行 第二部分  建立数据库 第2章  定义数据结构 2.2.1 定长字符串 CHARACTER(n): n为最大字符数,通常用空格来填充数量不足的字符 2.2.2 变长字符串
TXT在线小说管理器
不知道哪里写错了,各位大神帮忙指点下,告诉怎么进行修改
英语口语练习四十之地道口语:感谢及回应感谢的英语表达
表达感谢有很多英语运用方式:1.Thank you.谢谢作为最普遍的表达感谢的语句,与此相同的意思表达为Thanks。2.Thank you very much.非常感谢在Thank you 后面加上程度词,表达了对对方的感激程度之深,此外还有:Thanks a lot 非常感谢;Thank you so much 非常感谢;Thanks a bundle 非常感谢”a bundle”常作为量词,为
求助各位高手,帮忙做下,谢谢了
由计算机“想”一个四位数,请人猜出这个四位数是多少。人输入四位数字后,计算机首先判断这四位数字有几位是猜对了,并且在对的数字中又有几位位置也是对的,将结果显示出来,给人以提示,请人再猜,直到人猜出计算机所想的四位数是多少时为止。 
不知道错在了哪里,请求帮忙,谢谢
代码如下: #include int main() { int a[10][10]={0},i,j; for(i=0;i<10;i++) { for(j=0;j<10;j++) { if(i==j||j==0) { a[i][j]=1;
vc下通过ado访问数据库
这个是错误的代码,麻烦大家帮忙看看问题在哪里,邮箱shulin-543@163.com
求大神帮忙看一下哪里错误了
执行的操作是根据学号删除mysql表里的数据 显示错误:java.sql.SQLException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '??='10001'' a
面试题: 看下面的程序是否有问题 如果有问题请指出 并说明 (关于数据类型-隐性转换的小陷阱)
package Exercise; public class Text_10 { // 面试题: 看下面的程序是否有问题 如果有问题请指出 并说明 public static void main(String[] args) { byte b1 = 3; byte b2 = 4; // 无法编译 byte b4 = b1 + b2; // 答案:存在隐性转换,因此会自动提升到