leetcode 反转链表

反转一个单链表。

示例:

输入: 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;
    }

 



Tags: