我在C中编写了以下代码。我是C的新手。插入和打印功能似乎工作正常但我得到一个提示,说当我调用Reverse函数时程序停止工作。 我哪里出错?
migration
答案 0 :(得分:3)
上述程序存在两个问题:
1)您有两个head
变量。一个是全局变量,另一个是main
函数的局部变量。该局部变量是传递给Reverse()
的变量。由于函数的第一件事是解除引用它,程序崩溃了。删除head
函数中的本地main()
变量应解决此问题。
2)Reverse()
函数在达到退出条件时正确返回head
,但其余时间会发生什么?它在非退出条件情况下错过了返回。这是一个解决问题的差异:
printf("calling reverse");
- Reverse(p->next);
+ struct Node* ret;
+ ret = Reverse(p->next);
struct Node* q = p->next;
q->next = p;
p->next = NULL;
+ return ret;