JavaScript의 배열이 스택의 모든 기능을 제공하지만, 우리 고유의 스택 클래스를 구현해 보겠습니다. 우리 클래스는 다음과 같은 기능을 가질 것입니다 -
- push(element):스택의 맨 위에 요소를 푸시하는 함수입니다.
- pop():상단에서 요소를 제거하고 반환하는 함수입니다.
- peek():스택 맨 위에 있는 요소를 반환합니다.
- isFull():스택의 요소 제한에 도달했는지 확인합니다.
- isEmpty():스택이 비어 있는지 확인합니다.
- clear():모든 요소를 제거합니다.
- display():배열의 모든 내용을 표시
스택의 최대 크기를 취하는 생성자와 이 클래스에 대한 다른 함수를 구현할 때 도움이 될 도우미 함수 display()를 사용하여 간단한 클래스를 정의하는 것으로 시작하겠습니다. 또한 스택이 가득 찼는지 비어 있는지 확인하기 위해 isFull 및 isEmpty라는 2개의 함수를 추가로 정의했습니다.
전체 함수는 컨테이너의 길이가 maxSize 이상인지 확인하고 그에 따라 반환합니다.
비어 있음 함수는 컨테이너의 크기가 0인지 확인합니다.
이는 다른 작업을 정의할 때 도움이 됩니다. 이 시점부터 정의한 함수는 모두 Stack 클래스 안에 들어갈 것입니다.
예시
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 = []; } // A method just to see the contents while we develop this class display() { console.log(this.container); } // Checking if the array is empty isEmpty() { return this.container.length === 0; } // Check if array is full isFull() { return this.container.length >= maxSize; } push(element) { // Check if stack is full if (this.isFull()) { console.log("Stack Overflow!"); return; } this.container.push(element); } }