LeetCode 24: Swap Nodes in Pairs

来源:互联网 发布:二维码美化软件 编辑:程序博客网 时间:2024/06/01 11:14

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.

解题思路

代码如下:

/** * 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 == NULL || head->next == NULL) return head;        ListNode *pre = NULL, *p1 = head, *p2 = head->next;        head = head->next;        while (p1 && p2) {            p1->next = p2->next;            p2->next = p1;            if (pre != NULL) {                pre->next = p2;            }            pre = p1;            p1 = p1->next;            if (p1 != NULL)                p2 = p1->next;        }        return head;    }};
0 0
原创粉丝点击