한 쪽 끝에서만 자료를 넣고 뺄 수 있는 구조(LIFO)
푸쉬(push)와 팝(pop)을 이용해 자료를 넣고 뺀다.
위 사진처럼 출구가 하나뿐인 구조다. 위로 쌓게 되면 가장 늦게 쌓은 데이터가 가장 먼저 나가게 된다. 콜스택에서 메소드들이 호출되고 종료되는 과정이 스택과 비슷하다.
class Stack {
constructor() {
this.stack = [];
}
push(element) {
this.stack.push(element);
}
pop() {
return this.stack.pop();
}
size() {
return this.stack.length;
}
}
const stack = new Stack();
stack.push(1); // [1]
stack.push(2); // [1, 2]
stack.push(3); // [1, 2, 3]
console.log(stack);
console.log(stack.size());
stack.pop(); // [1, 2]
stack.pop(); // [1]
stack.pop(); // []
console.log(stack);
class Queue {
constructor() {
this.queue = [];
}
enqueue(element) {
this.queue.push(element);
}
dequeue() {
this.queue.shift();
}
}
const queue = new Queue();
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
console.log(queue); // [1, 2, 3]
queue.dequeue(); // [2, 3]
queue.dequeue(); // [3]
queue.dequeue(); // []
console.log(queue); // []