LeetCode (24)Swap Nodes in Pairs

来源:互联网 发布:全球地名数据库 编辑:程序博客网 时间:2024/05/21 19:15

(24)Swap Nodes in Pairs

题目:将一个链表的每两个相邻链节做交换,输出交换后的链表。

例如:链表为1->2->3->4,那么返回的链表是2->1->4->3。

另外:不能开额外的链表空间。

根据题目直接从前到后扫一遍就可以了,的确是很简单的一道题,但是有几点需要特殊注意,首先就是0长度的链表,然后就是奇数长度和偶数长度的链表,这个时候只要加一个对链节的判断就可以了。

下面是代码:

class Solution {public:    ListNode* swapPairs(ListNode* head) {        ListNode *p1 = head;        if(p1 == NULL){            return head;        }        ListNode *p2 = head->next;        if(p2 == NULL){            return head;        }        ListNode *p3 = head->next->next;        p2->next = p1;        p1->next = p3;        head = p2;        if(p3 == NULL){            return head;        }        while(true){            ListNode *p0 = p1;            p1=p1->next;            p2=p1->next;            if(p2 == NULL){                return head;            }            p3 = p2->next;            p2->next = p1;            p1->next = p3;            p0->next = p2;            if(p3 == NULL){                return head;            }        }        return head;    }};
0 0