Stack

CodeLog·2020년 12월 5일
0

Stack

사전적 의미의 stack

  1. (보통 깔끔하게 정돈된) 무더기
  2. 많음, 다량
  3. (깔끔하게 정돈하여) 쌓다; 쌓이다, 포개지다

자료를 쌓아 올리는 형태이다
가장 먼저 들어온 데이터를 가장 나중에 배출되는 후입선출 방식(LIFO : Last IN First Out)

//Stack 자료구조
class Stack {
  constructor() {
    //stack으로 관리 될 요소들의 집함을 객체로 담는다.
    this.storage = {};
    //항상 가장 최근의 요소의 위치를 가리켜야한다.
    this.top = -1;
  }
	//storage가 가지는 키의 수
  size() {
    return this.top + 1;
  }
  //storage에 마지막에 삽입할 요소
  push(element) {
    this.top ++;
    this.storage[this.top]= element;
  }
  //storage 마지막 요소를 삭제
  pop() {
    let currentData = this.storage[this.top];
    if(this.top === -1){
      return '해당 storage가 비어있습니다.'
    }
    delete this.storage[this.top];
    this.top--;
    //마지막 요소를 삭제
    return currentData;
  }
}

let stack = new Stack();
stack.push(1);
console.log(stack.storage);//{0: 1}
stack.push(2);
console.log(stack.storage);//{0: 1, 1: 2}
stack.push(3);
console.log(stack.storage);//{0: 1, 1: 2, 2: 3}
console.log(stack.pop())//3
console.log(stack.storage);//{0: 1, 1: 2}
console.log(stack.pop())//2
console.log(stack.storage);//{0: 1}
profile
개발로그

0개의 댓글