返回信息流下面是家谱程序的一段,程序中printf("\n\n\t请输入添加人员性别女G男B:\n\t");
scanf("%1s",&NewNode1->Kind);
改成
if(CurrNode1->Kind == 'B' || CurrNode->Kind == 'b' )
NewNode1->Kind='G' ;
else
NewNode1->Kind='B';
就不能工作。刚看数据结构,望大家帮帮看看,(我不是一遇到问题就问,我是调试了很久,实在没有办法才这样的)
。。。。。。。。
case 'B':
case 'b':
TreeNode * NewNode1;
TreeNode * CurrNode1;
CurrNode1=(TreeNode *)malloc(sizeof(TreeNode));
CurrNode1 = NULL ;
printf("\n\n\t请输入那个人的名字:\n\t");
scanf("%s",name);
CurrNode1 = SearchTree(Tree,name,20);
。。。
NewNode1=(TreeNode *)malloc(sizeof(TreeNode));
printf("\n\n\t请输入添加人员姓名:\n\t");
scanf("%s",NewNode1->Name);
//
printf("\n\n\t请输入添加人员性别女G男B:\n\t");
scanf("%1s",&NewNode1->Kind);
//上面2行代码改成下面if语句就错,不知道什么原因
// if(CurrNode1->Kind == 'B' || CurrNode->Kind == 'b' )
// NewNode1->Kind='G' ;
// else
// NewNode1->Kind='B' ;
//
NewNode1->Parent=CurrNode1;
CurrNode1->NextNode[0]=NewNode1;
//free( CurrNode1 ) ; 必须注释
// free( NewNode1 ) ; 必须注释
break;
case 'C':
case 'c':
...。。。。。
其中,TreeNode定义如下,
typedef struct TreeNode
{
int Num; //记录这个人拥有几个儿女
char Name[20]; //记录这个人的姓名
char Kind; //标示节点的种类有女G男B
struct TreeNode * NextNode[20]; //记录这个人的儿女
struct TreeNode * Parent; //记录这个节点的父节点
}TreeNode;
这是一条镜像帖。来源:北邮人论坛 / cpp / #44022同步于 2010/9/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
家谱问题中一个奇怪的问题( C )
hero06
2010/9/17镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
【 在 hero06 的大作中提到: 】
: CurrNode1吧?是在上面定义的
: 【 在 tomcat114 的大作中提到: 】
: : CurrNode是哪里来的?
: ...................
// if(CurrNode1->Kind == 'B' || CurrNode->Kind == 'b' )
// NewNode1->Kind='G' ;
// else
// NewNode1->Kind='B' ;
我说的是CurrNode不是CurrNode1
你程序里出现了这个CurrNode……
【 在 tomcat114 的大作中提到: 】
: : CurrNode1吧?是在上面定义的
: : 【 在 tomcat114 的大作中提到: 】
: : : CurrNode是哪里来的?
: ...................
谢谢,哎,太粗心了,以后抬不起头了
这几天被家谱折腾死了,现在感觉程序中内存泄露严重。。。之前没有注意alloc的使用
家谱问题……我完全是被标题勾引进来的
【 在 hero06 (飞哥) 的大作中提到: 】
: 下面是家谱程序的一段,程序中printf("\n\n\t请输入添加人员性别女G男B:\n\t");
: scanf("%1s",&NewNode1->Kind);
: 改成
: ...................