24. 两两交换链表中的节点

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

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

示例:

给定 1->2->3->4, 你应该返回 2->1->4->3.
public class SwapNodesinPairs {
    public ListNode swapNodesinPairs(ListNode head) {
        ListNode result = new ListNode(0);
        result.next = head;
        ListNode cur = result; //链表头结点发生改变,所以result中next需要改变
        while(cur.next != null && cur.next.next != null) {
            ListNode temp = cur.next;  //第一节点
            ListNode second = temp.next;  //第二结点
            ListNode third = second.next;  //第三结点
            temp.next = third;  //第一结点指向第三
            second.next = temp; //第二结点指向第一
            cur.next = second;  //第二结点作为新的第一节点,一次交换完成
            cur = temp;            
        }
        return result.next;
    }
}

class ListNode {
    int val;   
    ListNode next;
    ListNode(int x) { val = x; }
}
无论有多困难,都坚强的抬头挺胸,人生是一场醒悟,不要昨天,不要明天,只要今天。不一样的你我,不一样的心态,不一样的人生,顺其自然吧
原文地址:https://www.cnblogs.com/xiyangchen/p/10945988.html