[DataStructure] Linked List

Yeongsan Son·2020년 11월 1일
0
post-thumbnail

⚑ Linked List (넌 무엇이냐)

☞ 개념정리


linked List를 이해하기 위해서는 node라는 녀석부터 이해할 필요가 있어 보인다.
간단히 말하자면, node란 정보를 저장하는 저장소이다.
더도 말고 덜도 말고 나와 같은 코린이라면 그냥 저장소라는 것만 기억하면 충분다고 생각한다.
그런데, 이 노드라는 녀석에게는 next라는 속성이 있다.
이 next라는 속성이 각 노드(저장소)들을 연결할 수 있는 연결고리 역할을 한다.

너와 나의 연결고리 이건 우리 안의 노드... turn up?!

☞ Linked List라고 순차적으로 정렬된 것이 아니다?

각 노드의 next 속성은 다음과 같이 데이터 정보가 흩어져 있는 경우에도 데이터를 찾아오는데 용이하다.
각 노드들은 next 속성을 통해서 다음 노드들의 정보를 가리키고 있기 때문에 흩어져 있는 데이터들도 찾을 수 있게 도와준다.

☞ Chaining

각 노드들을 연결하는 과정을 보면 next 속성의 값은 단순히 데이터 타입을 말하는 것이 아니라 레퍼런스라는 다른 영역의 것임을 알 수 있다.
레퍼런스의 사전적 정의는 참조한다라는 명사적 의미이다.
이 사전적 의미를 빌려 해석해 보자면 단순히 next 라는 속성은 단순히 다음 데이터를 저장하는 의미를 넘어서 데이터의 방향성(?)을 나타낸다고 생각한다.

☞ Example

class Node {
  constructor(value) {
    this.data = value;  // 노드가 저장하는 데이터
    this.next = null;  // 다음 노드에 대한 레퍼런스 
  }
}

// 1, 3, 5, 7, 9, 11, 13을 담는 노드 생성
// 관계없음

head_node = new Node(1)
node_1 = new Node(3)
node_2 = new Node(5)
node_3 = new Node(7)
node_4 = new Node(9)
node_5 = new Node(11)
tail_node = new Node(13)

// 링크리스트 만들기
// 노드 연결
head_node.next = node_1
node_1.next = node_2
node_2.next = node_3
node_3.next = node_4
node_4.next = node_5
node_5.next = tail_node

// 노드 순서대로 출력
iterator = head_node

while (iterator) {
  console.log(iterator.data)
  iterator = iterator.next
}

profile
매몰되지 않는 개발자가 되자

0개의 댓글