LeetCode *** 24. Swap Nodes in Pairs

来源:互联网 发布:淘宝被同行刷直接访问 编辑:程序博客网 时间:2024/06/06 08:47
题目:
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.


分析:
交换相邻的两个结点,同时不能改变结点的值只能对结点的位置改变。注意交换的结点不仅仅是相邻结点。同时还有这两个结点之前的那个结点。


代码:
/** * 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) {        ListNode *res=new ListNode(0);        res->next=head;        ListNode *tmpRes=res;                while(head!=NULL&&head->next!=NULL){                        ListNode *tmp=(head->next)->next;                        tmpRes->next=head->next;            tmpRes=head;                        (head->next)->next=head;            head->next=tmp;            head=tmp;                    }                return res->next;    }};

0 0