스택은 대부분의 프로그래밍 언어에서 일반적으로 사용되는 ADT(추상 데이터 유형)입니다. 예를 들어 카드 더미 또는 접시 더미 등과 같이 실제 스택처럼 동작하기 때문에 스택이라는 이름이 붙여졌습니다.
스택은 한쪽 끝에서만 작업을 허용합니다. 이 기능은 LIFO 데이터 구조를 만듭니다. LIFO는 후입선출을 의미합니다. 여기서 마지막에 배치(삽입 또는 추가)된 요소가 먼저 액세스됩니다. 스택 용어로 삽입 연산을 PUSH 연산, 제거 연산을 POP 연산이라고 합니다.
다음 다이어그램은 스택에 대한 작업을 보여줍니다 -
다음은 스택을 나타내는 완전한 자바스크립트 클래스입니다 -
예시
class Stack { constructor(maxSize) { // Set default max size if not provided if (isNaN(maxSize)) { maxSize = 10; } this.maxSize = maxSize; // Init an array that'll contain the stack values. this.container = []; } display() { console.log(this.container); } isEmpty() { return this.container.length === 0; } isFull() { return this.container.length >= this.maxSize; } push(element) { // Check if stack is full if (this.isFull()) { console.log("Stack Overflow!") return; } this.container.push(element) } pop() { // Check if empty if (this.isEmpty()) { console.log("Stack Underflow!") return; } this.container.pop() } peek() { if (isEmpty()) { console.log("Stack Underflow!"); return; } return this.container[this.container.length - 1]; } clear() { this.container = []; } }