[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
클로저를 사용하여 스택과 큐를 구현하면 외부에서 내부 배열에 직접 접근하지 않으므로 데이터의 무결성이 보장됩니다. 또한, 내부 구조를 외부에 노출시키지 않고 추상화된 인터페이스를 제공하여 더 모듈화된 코드를 작성할 수 있습니다.
클로저를 사용한 자료구조 구현은 코드를 간결하게 유지하면서도 안전하고 효율적인 자료구조를 구현하는 데 도움이 됩니다.