我试图通过递归以相反的顺序打印链表 这是代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct list {
int value;
struct list* next;
} list_s;
static int g_size=sizeof(list_s);
void printRe(list_s *node) {
if (node = NULL)
return;
printRe(node->next); // this is where error happens
printf("%d", node->value);
}
int main() {
list_s *head;
head = (list_s*)malloc(g_size);
int n;
scanf("%d",&n);
int i = 0;
int x;
scanf("%d", &x);
head->value = x;
head->next = NULL;
list_s *current;
current = head;
for (i; i < n - 1; ++i) {
current->next = (list_s*)malloc(g_size);
current = current->next;
scanf("%d", &x);
current->value = x;
current->next = NULL;
};
printRe(head);
return 0;
}
如您所见,当我尝试打印node-&gt; next时会发生错误。为什么会出现错误?我是否以错误的方式将列表传递给函数?
谢谢!
答案 0 :(得分:1)
如果printRe()函数中的条件应该像
那样if(node == NULL)而不是if(node = NULL)
我希望它会对你有所帮助。 感谢