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

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

原题

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode swapPairs(ListNode head) {
        //创建一个新结点,返回结果
        ListNode pre = new ListNode(0);
        pre.next=head;
        ListNode temp = pre;
        while(temp.next!=null&&temp.next.next!=null){
            ListNode start = temp.next;
            ListNode end = temp.next.next;
            //交换两节点
            //保存后一个结点信息
            temp.next = end;
            //将前一个节点指针指向后一个节点的后继结点
            start.next = end.next;
            //将后一个结点指针指向前一个节点
            end.next = start;
            temp = start;
        }
        return pre.next;
    }
}

你可能感兴趣的:(LeetCode刷题(中等),链表,数据结构)