链表反转的两种方式
1.头插法
先创建一个新的链表,然后不断遍历我们想要反转的链表,再一个一个使用头插法插入到我们新建立的链表中,这样链表就倒置了。
LinkList Reverse(LinkList re)
{LinkList n;n = (LinkList)malloc(sizeof(LNode));n->next = NULL;while (re->next != NULL){LinkList cnt = (LinkList)malloc(sizeof(LNode));cnt->data = re->next->data;cnt->next = n->next;n->next = cnt;re = re->next;}return n;
}
2.列表原地倒置
主要就是创建两个变量一个,next, 另一个 prev,从前往后过一遍即可。
LinkList Reverse(LinkList re)
{ LinkList prev = NULL, curr = re, next; while (curr != NULL) { next = curr->next; curr->next = prev; prev = curr; curr = next; } return prev; // prev最终会是新的头节点
}