본문 바로가기
갬발자의 프로그래밍/알고리즘 & 자료구조

[자료구조] Stack 직접 구현하기

by 코라제이 2021. 3. 28.

stack은 후입선출(LIFO)의 자료 구조이다. 즉, 마지막에 넣은 데이터가 가장 먼저  꺼내진다.

[구현하기]

class Stack<T> {
  private stack: Array<T> = [];
  private max = 0;
  private len = 0;
  constructor(max: number) {
    this.max = max;
  }

  top(): T {
    return this.stack[this.len - 1];
  }

  pop(): Stack<T> {
    if (this.len === 0) throw new Error('stack is empty');
    this.stack.splice(this.len - 1, 1);
    this.len--;
    return this;
  }

  push(value: T): Stack<T> {
    if (this.len === this.max) throw new Error('stack is full');
    this.stack[this.len] = value;
    this.len++;
    return this;
  }

  empty(): boolean {
    return this.stack.length === 0 ? true : false;
  }

  get size(): number {
    return this.max;
  }
}

 

[사용하기]

const myStack = new Stack<number>(10);
console.log(myStack.empty());
myStack.push(1);
myStack.push(2);
myStack.push(3);
myStack.push(4);
console.log(myStack);
myStack.pop();
myStack.pop();
myStack.pop();
console.log(myStack);
console.log(myStack.top());

 

결과

상자 안에 내용물을 쌓아둔다고 생각하면 이해하기 더 쉬워진다.

'갬발자의 프로그래밍 > 알고리즘 & 자료구조' 카테고리의 다른 글

[자료구조] Queue 구현하기  (0) 2021.03.31
[자료구조] Linked List 직접 구현하기.  (0) 2021.03.30
큐 와 스택  (0) 2020.02.18
BIG-O 표기  (0) 2020.02.14

댓글