Двадцать два обмена список узлов

Двадцать два коммутационный узел в связанном списке

LeetCode

Учитывая обмен список попарно с соседними узлами, и возвращает список обмена, а не просто изменение значения внутреннего узла, но требует фактического обмена узла.

мышление

Во-первых понять, структурные характеристики и список принципе, список представляет собой линейную структуру таблицы, вставка данных и удаление низкая сложность, но, чтобы пройти, чтобы найти высокую сложность. Необходимо, чтобы получить голова из списка, который является производным от принципа списка, мы перечислим работу, он является головным узлом списка экспозиции, чтобы быть прямо или косвенно, узел списка операций.

реализация кода

Используя код, реализованный в Java.

class Solution {
    public ListNode swapPairs(ListNode head) {
    //定义新的链表为dummy,头结点的值0
        ListNode dummy = new ListNode(0);
   //dummy的后一个节点指向head     
       dummy.next = head;
       ListNode p = dummy;
       if(p.next == null || p.next.next == null) return head;
            //交换两个节点,修改他的next指向
           while(p.next != null && p.next.next != null){
               ListNode n1 = p.next;
               ListNode n2 = p.next.next;
               n1.next = n2.next;
               n2.next = n1;
             
}
            //重新定head
            p = n2;
        }
        //返回一个头结点,也是直接返回交换后的链表。
        ListNode result = dummy.next;
        
        return result;
    }
}

рекомендация

отblog.csdn.net/qq_21306815/article/details/93765238