我正在编写一个函数,它使链接列表反转元素,然后打印结果。我跑的时候不能让它正常工作;它只打印第一个值。
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);
}
答案 0 :(得分:2)
作业p = prev
不会更新LIST
中的前端指针。当你调用lst_print(l)
时,你从列表的旧前面开始,这是新的后退,因此它会在一次迭代后停止。
相反,您应该使用以下内容更新列表的正面(和背面):
l->front = prev;
l->back = p;