Last In First Out
이라는 개념을 가진 선형 자료구조
(Ex: 프링글스를 생각하면 편함)
Push와 Pop으로 이루어져 있음
Empty Stack에서 Push를 통해 저장하고 Pop으로 꺼냄
function sum (a,b) { // sum 함수가 실행하면서 스택이 쌓임
return a + b;
} // sum 함수가 종료되어 스택이 제거 됨
function print(value) { // print 함수가 실행하면서 스택이 쌓임
console.log(value); // console.log(value)가 실행되면서 스택이 쌓임 [이때 스택 1. print 함수, 2. console.log 함수]
} // log 출력 이후 스택 제거
print(sum(5,10)); // print 출력되어 스택 제거
const stack = [];
// Push
stack.push(1);
stack.push(2);
stack.push(3);
console.log(stack); // [1, 2, 3]
// Pop
stack.pop();
console.log(stack); // [1, 2]
// Get Top
console.log(stack[stack.length - 1]); // 2
class Node {
constructor(value) {
this.value = value;
this.Node = null;
}
}
class Stack {
constructor() {
this.top = null;
this.size = 0;
}
push(value) {
const node = new Node(value);
node.next = this.top;
this.top = node;
this.size += 1;
}
pop() {
const value = this.top.value;
this.top = this.top.next;
this.size -= 1;
return value;
}
size() {
return this.size;
}
}
const stack = new Stack()
stack.push(1);
stack.push(2);
stack.push(3);
console.log(stack.pop()); // 3
stack.push(4);
console.log(stack.pop()); // 4
console.log(stack.pop()); // 2