leetcode24

题目:

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

 

示例:

给定 1->2->3->4, 你应该返回 2->1->4->3.

 

解题思路:

奇数位置的结点与偶数位置的结点进行交换,如果链表有奇数个结点,则最后一个结点不用管。注意,用一个假头节点dummy可以避免最后找不到链表的头。

 

代码:

class Solution {
public:
    ListNode* swapPairs(ListNode* head) {
        ListNode* dummy = new ListNode(-1);        
        dummy->next = head;
        ListNode* cur = dummy;
        while(cur->next && cur->next->next){
            ListNode* t = cur->next->next;
            cur->next->next = t->next;
            t->next = cur->next;
            cur->next = t;
            cur = t->next;
        }
        return dummy->next;
    }
};

 

 








posted @ 2019-04-02 16:54  yxl2019  阅读(73)  评论(0编辑  收藏  举报