后缀表达式创建树

后缀表达式创建树

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

最佳答案

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

mynode *temp,*stack[100];

这些都是未初始化的。
您将temp->righttemp->left分配给每个未初始化的mynode *
          temp->right=stack[--k];
          temp->left=stack[--k];

然后尝试取消对未初始化指针的引用,以获取data元素。
          //printf("%c %c\n",temp->left->data,temp->right->data);

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

关于c - 从后缀表达式创建树,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16991288/

10-10 11:30