2013-02-16 4 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; 

Я определил узел структуры, содержащий элементы головы, левого и правого элементов. Я точно знаю, что tra возвращает текущее значение, когда оно равно null, поскольку я создаю сначала пустое дерево, поэтому все узлы будут пустыми.

+1

Aww, 'new' как имя переменной в коде C? Что делать, если кто-то пытается скомпилировать его с помощью компилятора C++? – 2013-02-16 18:11:09

+0

Думаю, вам нужно просмотреть то, что вы опубликовали, - код не выглядит достаточно полным, чтобы предлагать свои мнения. – DrC

+0

@ H2CO3: но вопрос помечен как 'c', и почему он попытается скомпилировать C-код с помощью компилятора C++. :) проще просто связать объектный код, если он хочет писать C++ или сборку. – emil

ответ

1

Там что-то странное.

if (current == NULL) 
    return current; 

Почему return current? Текущий - null?

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

tra принимает один аргумент?

Я рекомендую вам использовать gdb. Научитесь использовать его сейчас, и он даст вам возможность самостоятельно ответить на этот вопрос. Это не сложно.

+1

+1: Хорошо, я признаю это. Ответ порядочный, но ваше имя просто f'ing * awesome *. – WhozCraig

+0

haha ​​Я действительно не знаю, что сказать. Недостаточно кода, чтобы ничего не делать, кроме угадывания, и OP кажется смущенным :( – slezica

+1

Я согласен. Скажите мне, какого черта я набираю для отправки целевого комментария (@username) вам в качестве начального символа. cut/paste кажется немного суровым = P (Кстати, вы называете пасты в редакторе Xcode просто прекрасным, что, откровенно удивляло меня.) – WhozCraig

1

tra выглядит подозрительно. Что такое проверка? Если current - NULL, верните его, иначе падение стека и возврат мусора вызывающему.

+0

Я просто удалил остальную часть кода, так как для этого не было необходимости. Позвольте мне изменить его, чтобы сделать его проще. – user1899174

+1

@ user1899174 Кажется, вы удалили намного больше, чем нужно, чтобы понять вашу проблему. Пожалуйста, опубликуйте что-нибудь, что может воспроизвести проблему. – pmr

Смежные вопросы