leetcode 24. Swap Nodes in Pairs

来源:互联网 发布:位置定位软件 编辑:程序博客网 时间:2024/06/09 15:52

24. Swap Nodes in Pairs

Given a linked list, swap every two adjacent nodes and return its head.

For example,
Given 1->2->3->4, you should return the list as 2->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.

class Solution {public:    ListNode* swapPairs(ListNode* head) {        ListNode* dummyNode=new ListNode(0);        dummyNode->next=head;        ListNode* p=dummyNode;        while(p->next && p->next->next){            ListNode* node1=p->next;            ListNode* node2=node1->next;            ListNode* next=node2->next;            node1->next=next;            node2->next=node1;            p->next=node2;            p=node1;//注意这里,要以交换后的位置为准        }        ListNode* retNode=dummyNode->next;        delete dummyNode;        return retNode;    }};class Test{public:    void test(){        int arr[]={0, 1, 3, 2, 5, 4};        int n=sizeof(arr)/ sizeof(int);        ListNode* head=createLinkedList(arr, n);        printLinkedList(head);        ListNode* head2=Solution().swapPairs(head);        printLinkedList(head2);        deleteLinkedList(head2);    }};



原创粉丝点击