206. Reverse Linked List

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?

Accepted
735,173
Submissions
1,271,005
 
 
/**
 * 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) {
        ListNode *p1=NULL,*p2=head,*p3=NULL;
        while(p2)
        {
            p3=p2?p2->next:NULL;
            p2->next=p1;
            p1=p2;
            p2=p3;
        }
        return p1;
    }
};

9行, 应该是最精简的代码了.  需要用到三个变量来循环.

原文地址:https://www.cnblogs.com/lychnis/p/11836254.html