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

소개

원형 연결 리스트는 각 노드가 다음 노드를 가리키며 마지막 노드가 첫 번째 노드를 가리키는 자료 구조입니다. 이 포스트에서는 자바스크립트로 원형 연결 리스트를 구현하는 방법을 살펴보겠습니다.

구현

노드 정의

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

원형 연결 리스트 구현

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

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

  display() {
    let current = this.head;
    do {
      console.log(current.data);
      current = current.next;
    } while (current !== this.head);
  }
}

사용 예제

const circularList = new CircularLinkedList();

circularList.append(1);
circularList.append(2);
circularList.append(3);

circularList.display();

마치며

이렇게 자바스크립트를 사용하여 원형 연결 리스트를 구현할 수 있습니다. 원형 연결 리스트는 특정 상황에서 유용하게 활용될 수 있는 자료 구조입니다.

참고 문헌: