反转单向链表

Tags
算法
链表
ID
59
 
ListNode* ReverseList(ListNode* head) { struct ListNode* prev = NULL; struct ListNode* next = NULL; while (head != NULL) { next = head->next; head->next = prev; prev = head; head = next; } return prev; }
NULL [1] --> [2] --> [3] prev head next NULL <-- [1] [2] --> [3] prev head next NULL <-- [1] <-- [2] [3] prev head
第一步:next 指向 head 的下一个
第二步:head 的下一个指向 prev
第三步:prev 指向 head,head 指向 next (均往后挪一个)