[Data Structure ] Stack & Queue

eslim·2020년 9월 11일
0

TIL

목록 보기
1/1
post-thumbnail

Data Structure(자료 구조) - Stack & Queue

1. Stack

  • LIFO(Last In First Out)
  • 마지막으로 들어온 데이터가 가장 먼저 나간다.

  • 가장 최근에 쌓인 데이터가 먼저 처리된다.

1-1. 스택의 예

  • 개발자들의 최대 커뮤니티 Stack Overflow
  • 브라우저의 history
  • 터미널 cd(Change Directory), pwd(현재 경로를 알아보는 명령어)
  • 함수 실행 콜 스택

1-2. 스택 코드 구현

class Stack {
  constructor() {
    this.state = [];
  }

  push = (data) => {
    // 데이터를 스택에 push 하는 것을 구현 해 주세요
    this.state.push(data);
  };

  pop = () => {
    // 데이터를 스택에서 pop 해서 그 값을 리턴하도록 구현 해 주세요
    return this.state.pop();
  };

  getPeak = () => {
    // 스택의 최상위 값을 리턴하도록 구현 해 주세요
    return this.state[this.state.length - 1];
  };
}

module.exports = Stack;

2. Queue

  • FIFO(First In First Out)
  • 처음으로 들어온 데이터가 가장 먼저 나간다.

  • 가장 먼저 들어온 데이터가 먼저 처리된다.

2-1. 큐의 예

  • 프린터 작업 스케쥴러
  • javascript 비동기 처리

2-2. 큐 코드 구현

class Queue {
  constructor() {
    // 어떤 자료구조를 사용해 데이터를 담아야 할지 고민 해 주세요
    this.state = [];
  }

  enqueue = (data) => {
    // 데이터를 큐에 enqueue 하는 것을 구현 해 주세요
    this.state.push(data);
  };

  dequeue = () => {
    // 데이터를 큐에서 dequeue 해서 그 값을 리턴하도록 구현 해 주세요
    return this.state.shift();
  };

  getFirst = () => {
    // 큐의 가장 먼저 들어온 값을 리턴하도록 구현 해 주세요
    return this.state[0];
  };
}

module.exports = Queue;

0개의 댓글