2010-11-10 129 views
1

我负责创建一个程序,将类似((X+3)*(X+4))的东西变成二叉树,以及其他一些功能。到目前为止,我已经接受了输入,并将其解析为两个堆栈,一个包含操作数,另一个包含操作符。从Stack创建二叉树?

我所定义的栈只是现在(所以他们只有一个nextnode和char value。 但是,我似乎有问题,定义了树)将来自堆值代入我的树(因此可能是一个问题。

我的筹码被定义为这样的:

typedef struct node 
{ 
    char value; 
    struct node * nextnode; 
} node; 

我的树被定义为:

typedef struct tree 
{ 
    node * thisNode; 
    struct tree *right, *left; 
} tree; 

我不知道日e节点*部分,也许它应该是不同的东西。

我一直在考虑初学者的简单情况2 + 3。在这种情况下,树的根应该是+,左边是2,右边是3.

+ 
/\ 
2 3 

如何添加栈上的内容到我的树?我一直在使用

root->thisNode = operatorTop; 

哪里operatorTop是运营商栈(定义为node * operatorTop)的顶部, 但即使这样简单的线条似乎试图段错误。

+0

你必须向我们展示了一个完整的程序,段错误。你的数据结构没有任何内在的错误(除了你使用一个char作为int并且你正在typedefing命名的结构,这不完全不正确)。 – nmichaels 2010-11-10 21:58:49

+0

这就是我所问的几乎所有问题,如果有什么内在的错误。我忘了标签,但这是作业,所以我不想/太多/太多的帮助。霍根让我走上正轨,正是这样。 – Blackbinary 2010-11-10 22:01:37

回答

4

也许问题是你没有拨打malloc()root保留空间。

(编译器会报空指针赋值,但段错误的零点解引用,因为你是指向一个随机地点)。

+0

谢谢!就是这样。我知道这很简单。 – Blackbinary 2010-11-10 22:02:03