从后缀表达式创建树

时间:2013-06-07 19:09:07

标签: c tree

这里我试图从给定的后缀表达式创建一个树。 当我尝试执行时,第一个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];
   }

1 个答案:

答案 0 :(得分:2)

您有一个mynode指针的本地数组,存储在stack

mynode *temp,*stack[100];

这些都是未初始化的。

您为未初始化的temp->right分配了temp->leftmynode *

          temp->right=stack[--k];
          temp->left=stack[--k];

然后,您尝试取消引用未初始化的指针以转到data元素。

          //printf("%c %c\n",temp->left->data,temp->right->data);

这就是你的代码死的原因。