[javascript] 클로저를 활용한 자료구조 구현

클로저는 JavaScript에서 매우 강력한 기능으로, 자료구조를 구현할 때 유용하게 활용될 수 있습니다. 이번 포스트에서는 클로저를 사용하여 간단한 스택과 큐 자료구조를 구현하는 방법을 살펴보겠습니다.

스택(Stack)

스택은 후입선출(LIFO, Last In First Out) 원리를 따르는 자료구조로, 삽입과 삭제가 한 쪽 끝에서만 이루어집니다. 즉, 가장 최근에 삽입된 항목이 가장 먼저 삭제됩니다.

function createStack() {
  const stack = [];

  function push(item) {
    stack.push(item);
  }

  function pop() {
    return stack.pop();
  }

  return {
    push,
    pop
  };
}

const stack = createStack();
stack.push(1);
stack.push(2);
console.log(stack.pop()); // 2
console.log(stack.pop()); // 1

큐(Queue)

큐는 선입선출(FIFO, First In First Out) 원리를 따르는 자료구조로, 삽입은 한 쪽 끝에서, 삭제는 반대쪽 끝에서 이루어집니다.

function createQueue() {
  const queue = [];

  function enqueue(item) {
    queue.push(item);
  }

  function dequeue() {
    return queue.shift();
  }

  return {
    enqueue,
    dequeue
  };
}

const queue = createQueue();
queue.enqueue(1);
queue.enqueue(2);
console.log(queue.dequeue()); // 1
console.log(queue.dequeue()); // 2

클로저를 사용하여 스택과 큐를 구현하면 외부에서 내부 배열에 직접 접근하지 않으므로 데이터의 무결성이 보장됩니다. 또한, 내부 구조를 외부에 노출시키지 않고 추상화된 인터페이스를 제공하여 더 모듈화된 코드를 작성할 수 있습니다.

클로저를 사용한 자료구조 구현은 코드를 간결하게 유지하면서도 안전하고 효율적인 자료구조를 구현하는 데 도움이 됩니다.

참고 자료