[LeetCode] Reverse Linked List


質問する


Given the head of a singly linked list, reverse the list, and return the reversed list.입출력 예
Input: head = [1,2,3,4,5]
Output: [5,4,3,2,1]

に近づく


headを入力するnextで行います.まず、headのnextを別の変数に配置し、headのnextをnullに変更します.入出力例に示すように、headは[1]nextNodeになります.while文を使用するときにnextNodeが存在する場合は、条件はです.これはnextnodeでheadを逆方向の値に変更するためです.
while文の論理は次のとおりです.宣言されたnextNodeのnextを新しい変数nextNextNodeに宣言し、nextNodeのnextをheadに変更します.次のheadは変更されたnextNodeとして指定され、nextNodeはnextNextNodeとして指定されます.あなたが何を言っているのか分かりません.コードを表示します.

に答える

var reverseList = function(head) {
    console.log(head)
    if (!head) return head;
    
	let nextNode = head.next;
	
	// 맨 마지막 노드는 항상 null이 되도록!
	head.next = null;
    
	// head에 next가 있는 동안 아래의 while문을 돌린다 
	while (nextNode) {
	    const nextNextNode = nextNode.next; // nextNode의 그 다음 노드를 변수 nextNextNode로 지정해준다
		nextNode.next = head; // nextNode.next는 제일 처음에 있던 head node로 대체 시켜준다
	    head = nextNode; // 기존의 head node는 그 뒤에 있던 nextNode로 대체 시켜준다
	    nextNode = nextNextNode; // 기존의 next node는 그 뒤에 있던 nextNextNode로 대체 시켜준다
	    // 이 cycle 이 반복되면서 기존의 순서는 반대로 뒤바뀔 것이다.
	}

    return head;
};