[데이터 구조와 알고리즘은 인접한 노드리스트 페어 교환을 감안하고, 과거에리스트를 반환한다.

주어진 1->2->3->4, 당신은 반환해야합니다 2->1->4->3. 

제목은 매우 간단 보면, 그것은 이전 노드, 노드 전구체 노드가 후륜 구동 후륜 구동 노드를 가리 키를 드라이브 노드 점을 수 있도록하는 것입니다뿐만 아니라 홍수 노드는 교환 할 필요가 후, 그래서 조금 까다 롭습니다.
다음도 사상은 예시
1 -> 2 -> X ->는 Y.
| | |
왼쪽 오른쪽 AFT
단계 : 초기화 preNode =가, 오른쪽, 왼쪽, 오른쪽 앞뒤 네 개의 노드를 가리키는 
단계 : 프리 왼쪽 = = 왼쪽, 오른쪽 = pre.next right.next]

. 1 "-"X-2 ->은 Y
         | | |
       pre.next 오른쪽 후미를 남겨
NULL = X 축하다면 pre.next = NULL, 
! = null의 경우, X, Y = NULL, pre.next = X,
그렇지 Y -> X (Y.next = X ), Y = pre.next 사전 = X;
코드
ListNode swapPairs 공개 (ListNode 헤드) { 
// 만약 어떤 경계 조건 / 하나 개의 노드 만, 직접 반환 
        IF (머리 == null이 || head.next == NULL) 
            반환 머리, 
        
        ListNode 헤드가 오른쪽 = head.next을 = 왼쪽, = right.next AFT; 
        ListNode preHead 새로운 새 ListNode = (-1) 
        preHead.next = 오른쪽; 
        ListNode 새로운 새로운 사전 ListNode = (-1); // 선행 노드 
        그동안 {(오른쪽 = NULL!) 
            
            right.next = 왼쪽; 
            오른쪽 = pre.next, 
            사전 = 왼쪽; 
            
            IF (AFT == NULL) { 
                pre.next = NULL; 
                ; BREAK 
            } 
            = AFT 왼쪽, 
            오른쪽 = aft.next;
            
            경우 (오른쪽 == NULL) 
            { 
                pre.next = 왼쪽; 
            사용한다} else { 
                = right.next 후방; 
            } 
        } 
        preHead.next를 반환; 
    }

  아이디어는

추천

출처www.cnblogs.com/zhengwangzw/p/11462560.html