2010-11-10 144 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