反转一个单链表。
示例:
输入: 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; }