[javascript] 연결 리스트 (Linked List) 데이터 구조

연결 리스트는 데이터를 일렬로 연결한 데이터 구조입니다. 각 데이터 요소는 자신 다음에 오는 데이터 요소를 가리키는 포인터를 포함합니다. 이는 각 요소가 이전 요소와 다음 요소의 형식적인 연결을 갖게 됩니다.

연결 리스트는 다음과 같은 특징을 갖습니다:

연결 리스트의 종류

단일 연결 리스트 (Singly Linked List)

단일 연결 리스트는 각 요소가 다음 요소를 가리키는 포인터만을 갖고 있습니다. 이는 요소들을 한 방향으로만 탐색할 수 있게 합니다.

이중 연결 리스트 (Doubly Linked List)

이중 연결 리스트는 각 요소가 이전 요소와 다음 요소를 가리키는 두 개의 포인터를 갖고 있습니다. 이는 요소를 양방향으로 탐색할 수 있게 합니다.

원형 연결 리스트 (Circular Linked List)

원형 연결 리스트는 마지막 요소가 첫 번째 요소를 가리키는 방식으로 연결되어 있습니다.

예시 코드

class Node {
  constructor(data) {
    this.data = data;
    this.next = null;
  }
}

class SinglyLinkedList {
  constructor() {
    this.head = null;
  }

  add(data) {
    const newNode = new Node(data);
    if (!this.head) {
      this.head = newNode;
    } else {
      let current = this.head;
      while (current.next) {
        current = current.next;
      }
      current.next = newNode;
    }
  }
}

위의 예시 코드는 JavaScript로 작성된 간단한 단일 연결 리스트의 구현을 보여줍니다.

연결 리스트는 삽입과 삭제가 상대적으로 용이하며, 데이터의 크기를 미리 정하지 않아도 되는 유연한 구조를 갖고 있습니다.

참고 자료