2013-02-16 93 views
1

我似乎得到了一個分段錯誤,好像錯誤是來自調用tra,但我無法確切地看到我寫的代碼有什麼問題。真的沒有線索,任何想給我一個提示?非常感謝。二叉樹實現

struct node *tra(struct node * start) { 
    struct node * current = start;  
    return current; } 

Table ins(Key_Type input, Table table) { 
    if ((find(input, table)) == FALSE) { 
    struct node *newVal = tra(table -> head, input); 
    newVal -> element = input; 

我已經定義了一個包含head,left和right元素的struct節點。我確實知道tra在返回null時會返回當前狀態,因爲我正在創建一個最初爲空的樹,所以所有節點都將爲空。

+1

Aww,'new'作爲C代碼中的變量名?如果有人試圖用C++編譯器編譯它會怎麼樣? – 2013-02-16 18:11:09

+0

我認爲你需要回顧一下你發佈的內容 - 這些代碼看起來不夠完整,無法提供意見。 – DrC 2013-02-16 18:12:02

+0

@ H2CO3:但問題標記爲'c',爲什麼他會嘗試用C++編譯器編譯C代碼。 :)如果要編寫C++或程序集,只需鏈接目標代碼即可。 – emil 2013-02-16 18:20:25

回答

1

有一些奇怪的東西在那裏。

if (current == NULL) 
    return current; 

爲什麼return current?當前是null

struct node *new = tra(table -> head, input); 

tra需要一個參數?

我建議你使用gdb。現在就學會使用它,它會給你自己回答這個問題的能力。這並不困難。

+1

+1:好吧,我承認。答案是最好的,但你的名字只是*真棒*。 – WhozCraig 2013-02-16 18:27:57

+0

哈哈我真的不知道該說什麼。該代碼是不足以做任何事情,但猜測,和OP似乎困惑:( – slezica 2013-02-16 18:28:59

+1

我同意,所以告訴我,我打了什麼,以發送目標評論(@用戶名)給你作爲開幕人物。一個剪切/粘貼似乎有點苛刻= P(順便說一句,你的名字粘貼到一個Xcode編輯器就好了,這讓我很吃驚)。 – WhozCraig 2013-02-16 18:33:29

1

tra看起來很可疑。什麼是檢查?如果currentNULL返回它,否則下降堆棧並返回垃圾到調用者。

+0

我剛剛刪除了其餘的代碼,因爲它不是必需的。讓我編輯它以使其更容易。 – user1899174 2013-02-16 18:13:31

+1

@ user1899174看起來你刪除了大量的東西來理解你的問題。請張貼能夠重現問題的內容。 – pmr 2013-02-16 18:14:25