https://leetcode.com/problems/swap-nodes-in-pairs/
연결 리스트 주어질 때 모든 인접한 두 노드 서로 바꾼 후 head 반환하기
(list node의 값 수정하지 않고 node자체를 바꾸는 식으로 풀어야함)
현재랑 다음거 swap하는데 prevNode로 이전거 기록하면서 이전거의 다음 정보도 같이바꿔주는게 핵심 (즉, dummy node 생성해서 이전 연결 정보 갱신해야하는 부분!)
/**
* Definition for singly-linked list.
* public class ListNode {
* public int val;
* public ListNode next;
* public ListNode(int val=0, ListNode next=null) {
* this.val = val;
* this.next = next;
* }
* }
*/
public class Solution {
public ListNode SwapPairs(ListNode head) {
if (head == null || head.next == null) return head;
ListNode prevNode = new ListNode(0);
ListNode currentNode = head;
ListNode nextNode = head.next;
head = head.next;
while(nextNode != null)
{
currentNode.next = nextNode.next;
nextNode.next = currentNode;
prevNode.next = nextNode;
prevNode = currentNode;
currentNode = currentNode.next;
if (currentNode == null) return head;
nextNode = currentNode.next;
}
return head;
}
}