鏈表反轉的兩種方式
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最終會是新的頭節點
}