[JS] 자바스크립트로 스택과 큐 구현하기

chaevivi·2023년 7월 24일
0
post-thumbnail

자바스크립트로 스택과 큐 구현하는 방법



1. 스택


스택이란?

스택은 가장 마지막에 넣은 데이터를 가장 먼저 꺼내는 후입 선출(LIFO - Last In First Out) 방식의 자료구조

  • push : 스택에 데이터를 넣는 것
  • pop : 스택에서 데이터를 꺼내는 것

자바스크립트로 스택 구현

// 클래스로 구현
class Stack {
  constructor(array = []) {
    this.array = array;
  }
  
  // 스택에 데이터 넣기
  push(value) {
    return this.array.push(value);
  }
  
  // 스택에서 데이터 꺼내기
  pop() {
    return this.array.pop();
  }
  
  // 전체 스택의 복사본 반환
  all() {
    return [...this.array];
  }
}

const stack = new Stack([1, 2, 3]);
console.log(stack.all());    // [1, 2, 3]

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

stack.pop();
console.log(stack.all());    // [1, 2, 3]
  • push
    • Array.prototype.push 메서드 사용하여 구현
    • push 메서드는 인수로 전달받은 값을 배열의 마지막 요소로 추가
    • 원본 배열 직접 변경
  • pop
    • Array.prototype.pop 메서드 사용하여 구현
    • pop 메서드는 배열에서 마지막 요소를 제거
    • 원본 배열 직접 변경


2. 큐


큐란?

큐는 가장 먼저 넣은 데이터를 가장 먼저 꺼내는 선입 선출(FIFO - First In First Out) 방식의 자료구조


자바스크립트로 큐 구현

// 클래스로 구현
class Queue {
  constructor(array = []) {
    this.array = array;
  }
  
  // 큐에 데이터 넣기
  enqueue(value) {
    return this.array.push(value);
  }
  
  // 큐에서 데이터 꺼내기
  dequeue() {
    return this.array.shift();
  }
  
  // 전체 큐의 복사본 반환
  all() {
    return [...this.array];
  }
}

const queue = new Queue([1, 2, 3]);
console.log(queue.all());    // [1, 2, 3]

queue.enqueue(4);    
console.log(queue.all());    // [1, 2, 3, 4]

queue.dequeue();
console.log(queue.all());    // [2, 3, 4]
  • enqueue
    • Array.prototype.push 메서드 사용하여 구현
    • push 메서드는 인수로 전달받은 값을 배열의 마지막 요소로 추가
    • 원본 배열 직접 변경
  • dequeue
    • Array.prototype.shift 메서드 사용하여 구현
    • shift 메서드는 배열의 첫 번째 요소 제거
    • 원본 배열 직접 변경
profile
직접 만드는 게 좋은 프론트엔드 개발자

1개의 댓글

comment-user-thumbnail
2023년 7월 24일

개발자로서 성장하는 데 큰 도움이 된 글이었습니다. 감사합니다.

답글 달기