C语言 反转链表并打印结果



我正在编写一个函数,该函数采用链表将元素反转到位,然后打印结果。当我运行它时,我无法让它正常工作;它只打印第一个值。

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);
}

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

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

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

相关内容

  • 没有找到相关文章

最新更新