反轉一個單連結串列。
示例:
輸入: 1->2->3->4->5->NULL
輸出: 5->4->3->2->1->NULL
// 將連結串列分為new和old兩個連結串列 // curOld是old連結串列的頭指標 // curNew是new連結串列的頭指標 // 本質上講old連結串列的結點一個一個取出後,將取出的節點再重組成一個新連結串列 ListNode* reverseList(ListNode* head) { ListNode* curOld = head; ListNode* curNew = NULL; ListNode* tmp = NULL; while(1) { if(curOld == NULL) { break; } //old指標即將跳轉的下一個位置存起來 tmp = curOld->next; //old指標放入new連結串列的頭位置 curOld->next = curNew; curNew = curOld; //old指標移位到下一個 curOld = tmp; } return curNew; }