这里我试图从给定的后缀表达式创建一个树。 当我尝试执行时,第一个printf语句执行成功,而第二个没有,程序就会挂断。
mynode *create_tree(char postfix[])
{
char symbol;
int i,k;
mynode *temp,*stack[100];
for(i=k=0;(symbol=postfix[i])!='\0';i++)
{
temp=(mynode *)malloc(sizeof(mynode));
temp->data=symbol;
temp->left=NULL;
temp->right=NULL;
//printf("%c",temp->data);
if(isalnum(symbol))
{
stack[k++]=symbol;
}
else
{
temp->right=stack[--k];
temp->left=stack[--k];
//printf("%c %c\n",temp->left->data,temp->right->data);
stack[k++]=temp;
}
}
return stack[--k];
}
答案 0 :(得分:2)
您有一个mynode
指针的本地数组,存储在stack
:
mynode *temp,*stack[100];
这些都是未初始化的。
您为未初始化的temp->right
分配了temp->left
和mynode *
,
temp->right=stack[--k];
temp->left=stack[--k];
然后,您尝试取消引用未初始化的指针以转到data
元素。
//printf("%c %c\n",temp->left->data,temp->right->data);
这就是你的代码死的原因。