反轉一個單鏈表。 示例: 輸入: 1->2->3->4->5->NULL 輸出: 5->4->3->2->1->NULL // 將鏈表分為new和old兩個鏈表 // curOld是old鏈表的頭指針 // curNew是new鏈表的頭指針 // 本質上講old鏈表的結點一個一個取出後,將取出的節點 ...
反轉一個單鏈表。
示例:
輸入: 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; }