leetcode---swap-nodes-in-pairs---链表

来源:互联网 发布:农业大数据价值 编辑:程序博客网 时间:2024/05/17 06:08

Given a linked list, swap every two adjacent nodes and return its head.
For example,
Given1->2->3->4, you should return the list as2->1->4->3.
Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    ListNode *swapPairs(ListNode *head)     {        if(!head)            return NULL;        ListNode *p = head;        ListNode *pre = head;        bool first = true;        while(p && p->next)        {            ListNode *next = p->next;      // next = 2next = 4            ListNode *next2 = next->next;  // next2 = 3  ; next2 = 5            next->next = p;                // 2->14->3            p->next = next2;               // 1->43->NULL            if(first)            {                head = next;                first = false;            }            else                pre->next = next;          //1->4            pre = p;                       // pre = 1    ; pre = 3            p = next2;                     // p = 3      ; p = NULL        }        return head;    }};
原创粉丝点击