我似乎遇到了分段错误,似乎错误来自对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时返回current,因为我创建的树一开始是空的,所以所有节点都是空的。
答案 0 :(得分:1)
tra
看起来很可疑。检查是什么?如果current
为NULL
,则将其返回,否则堆栈将丢弃并将垃圾返回给调用者。
答案 1 :(得分:1)
那里有一些奇怪的东西。
if (current == NULL)
return current;
为什么return current
?当前是null
?
struct node *new = tra(table -> head, input);
tra
只接受一个论点?
我建议您使用gdb
。现在学会使用它,它将使你有能力自己回答这个问题。这并不难。