c程序编译正常,运行出错,初步判定问题在指针上,求指导决

C语言 码拜 4年前 (2016-09-22) 462次浏览
#include <stdio.h>
#include <string.h>
#include <malloc.h> 
typedef char ElemType;
//定义二叉树结构
typedef struct THREAD{
	ElemType data;	//数据域 
	struct THREAD *lchild,*rchild;	//左右孩子指针 
}Thread,*ThreadPoint; 
int flag=0;		//左孩子和右孩子全靠它了~ 
//层次遍历构造二叉树 
void createBinaryTree(ThreadPoint tp,char *branch){
	ThreadPoint next;
	next=(ThreadPoint)malloc(sizeof(ThreadPoint));


		tp->data=*branch;	//赋值 

		if(flag==0){	//生产左树 
			tp->lchild=next;	//左孩子指向新结点 
			createBinaryTree(tp->lchild,branch+1);	//构造新结点 
			flag=1; 
		}else if(flag==1){	//生产右树 
			tp->rchild=next;
			createBinaryTree(tp->rchild,branch+1);
			flag=0;
		}


}
void main(){
	char * branch;
	ThreadPoint tp;
	tp=(ThreadPoint)malloc(sizeof(ThreadPoint));	//姑且把它作为第一个结点 

	scanf("%s",branch);		//一次性输入
	createBinaryTree(tp,&branch);	//开始构造 

}
解决方案

10

char * branch;
scanf(“%s”,branch);        //一次性输入
这个指针都没有初始化, 使用当然出问题
你的编译器都不提醒你吗?

80

1.你main函数调用createBinaryTree的时候,传的是&branch,也就是char **类型的,而函数声明是char *
2.createBinaryTree函数里字符串赋值用strcpy,而不是直接用=

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明c程序编译正常,运行出错,初步判定问题在指针上,求指导决
喜欢 (0)
[1034331897@qq.com]
分享 (0)