LeetCode 206は単一チェーンテーブルを反転する

891 ワード

LeetCode 206は、単一チェーンテーブルを反転する.
例:入力:1->2->3->4->5->NULL出力:5->4->3->2->1->NULL
アルゴリズム:チェーンテーブルを巡回し、現在のノード>nextを前のノードのアドレスに変更します(変更前に保存します).
/**
 * 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 || head->next==NULL) 
        {
            return head;
        } 
        ListNode* P1 = head;   // 1Node  
        ListNode* P2 = head->next;  //  Node  
        head->next = NULL;
        while(P2)
        {
            ListNode* p2 = P2->next; 
            P2->next = P1; //  Node next      
            P1 = P2;       //    Node  
            P2 = p2;       //       Node
        }       
        return P1;
    }
};