我试图通过递归打印链接列表反向,但它不起作用

时间:2017-02-18 11:28:44

标签: c recursion printing linked-list

我试图通过递归以相反的顺序打印链表 这是代码:

#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时会发生错误。为什么会出现错误?我是否以错误的方式将列表传递给函数?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果printRe()函数中的条件应该像

那样

if(node == NULL)而不是if(node = NULL)

我希望它会对你有所帮助。 感谢