Reverse a singly linked list.

Example:

Input: 1->2->3->4->5->NULL
Output: 5->4->3->2->1->NULL
Follow up:

A linked list can be reversed either iteratively or recursively. Could you implement both?

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-linked-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 

比较基础的链表题。。。

 

三地址存储 , 前一个,当前,后一个。

while(cur != NULL){
            temp = cur->next;
            cur -> next = pre;
            pre = cur;
            cur =temp;
        }

主要就这一个while()。

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
       if(head == NULL) return NULL;
        ListNode *pre = NULL, *cur = head , *temp =NULL;
        while(cur != NULL){
            temp = cur->next;
            cur -> next = pre;
            pre = cur;
            cur =temp;
        }
        return pre;
    }
};
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        if(head==NULL)
            return NULL;
        ListNode *prePtr = NULL, *curPtr = head, *nextPtr=head->next;
        while(nextPtr != NULL){
            curPtr->next = prePtr;
            prePtr = curPtr;
            
            
            curPtr = nextPtr;
            nextPtr = nextPtr->next;
        }

        curPtr->next=prePtr;
       
        return curPtr;  
    }
};

作者:varyshare
链接:https://leetcode-cn.com/problems/reverse-linked-list/solution/gao-xiao-jie-fa-da-bai-9999de-yong-hu-fan-zhuan-li/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。