Stack & Queue 2

Class를 이용하여 stack의 데이터 타입을 정의해보자.

class Stack {
  constructor() {
    this.storage = {}; 
    this.top = 0;
}
// 데이터를 저장할 빈 객체와 데이터 인덱스(indicator)인 top을 지정해주자.
  
  size() {
    return this.top;
  } 
// 데이터가 쌓일 때마다 인덱스인 top의 크기도 하나씩 증가한다.
// 가장 끝에 새로운 데이터를 추가해주자.

  push(element) {
    this.storage[this.top] = element;
    this.top += 1;
  } 
// 데이터를 삽입했을 때, 다음과 같이 표시된다 {0: Sasha, 1: Lisa, 2: Coco ...}
// top은 indicator로 값이 추가되면 다음 추가될 값의 인덱스를 targeting하게 되어있음.
 
  pop() {
    if (this.size() <= 0) {
      return;
    } // 삭제시킬 요소가 없을 경우, undefined 출력
    const result = this.storage[this.top - 1];
    // result 변수를 선언하여 가장 끝의 값을 할당해주자
    delete this.storage[this.top - 1];
    // 해당 값을 삭제해 주고
    this.top -= 1;
    // 삭제된 값 이전의 값의 인덱스를 targeting 해주자
    return result;
  } // 삭제된 result 값을 반환해주자

JS에 미리 정의된 데이터 타입인 Array를 이용하면 간략하게 구현할 수 있다.

const stack = []; 

stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
stack.push(5);

console.log(stack); // [1, 2, 3, 4, 5]

stack.pop(); // 5
stack.pop(); // 4

console.log(stack); // [1, 2, 3]

좋은 웹페이지 즐겨찾기