JAVASCRIPT/문법

[자료구조 / 알고리즘] 스택, 큐

예글 2024. 3. 4. 16:10

1. 추상자료형이란?

어떤 데이터의 구체적인 구현 방식은 생략한 채, 데이터의 추상적인 형태와 그 데이터를 다루는 방법만을 정해놓은 것

ADT(Abstract Data Type)

2. 스택(Stack)

데이터를 집어넣을 수 있는 선형(linear) 자료

나중에 집어넣은 데이터가 먼저 나옴. LIFO(Last In First Out)

데이터를 집어넣는 push / 데이터를 추출하는 pop / 맨 나중에 집어넣은 데이터를 확인하는 peek

class Stack {
  constructor() {
    this._arr = [];
  }
  push(item) {
    this._arr.push(item);
  }
  pop() {
    return this._arr.pop();
  }
  peek() {
    return this._arr[this._arr.length - 1];
  }
}

const stack = new Stack();
stack.push(1);
stack.push(2);
stack.push(3);
stack.pop(); // 3

3. 큐(Queue)

데이터를 집어넣을 수 있는 선형(linear) 자료

먼저 집어넣은 데이터가 먼저 나옴. FIFO(First In First Out)

데이터를 집어넣는 enqueue (push) / 데이터를 추출하는 dequeue (shift)

 

class Queue {
  constructor() {
    this._arr = [];
  }
  enqueue(item) {
    this._arr.push(item);
  }
  dequeue() {
    return this._arr.shift();
  }
}

const queue = new Queue();
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
queue.dequeue(); // 1