反转链接列表并打印结果

时间:2014-12-04 07:19:15

标签: c recursion linked-list reverse elements

我正在编写一个函数,它使链接列表反转元素,然后打印结果。我跑的时候不能让它正常工作;它只打印第一个值。

typedef struct node {
    ElemType val;
    struct node *next;
} NODE;


struct list_struct {
    NODE *front;
    NODE *back;
};

//reverse elements in list
void lst_reverse(LIST *l) {
    NODE *p = l->front;
    NODE *prev = NULL;
    NODE *current = p;
    NODE *next;

    while (current != NULL) {
        next = current->next;
        current->next = prev;
        prev = current;
        current = next;
    }
    p = prev;

    lst_print(l);
}

1 个答案:

答案 0 :(得分:2)

作业p = prev不会更新LIST中的前端指针。当你调用lst_print(l)时,你从列表的旧前面开始,这是新的后退,因此它会在一次迭代后停止。

相反,您应该使用以下内容更新列表的正面(和背面):

l->front = prev;
l->back = p;