[TIL] 2020. 06. 11. Stack_Queue

달밤·2020년 6월 11일
0

TIL

목록 보기
37/110
post-thumbnail

오늘 배운 것

자료구조

1. Stack

LIFO : Last In, First Out

  • 인터넷의 뒤로 가기 버튼을 생각해봤다.
  • 브라우저를 켰을 때 홈페이지가 가장 먼저 나왔고, 이후 여러 페이지를 서칭했다고 가정하자.
  • 뒤로 가기 버튼을 누르면 가장 첫 번째 화면이었던 홈페이지가 아니라, 바로 직전 페이지로 돌아간다.
  • 가장 마지막에 스택에 들어간 것이 가장 먼저 나온 것이다.
  • 과제를 통해 객체를 이용해서 구현해봤기 때문에 배열 메소드를 이용하지 않고 배열로 구현해본다.
class Stack {
    constructor(){
        this.top = -1;
        this.storage = [];
    }
    push (element) {
        this.top ++;
        this.storage[this.top] = element;
    }
    pop () {
        if(top < 0){
            return;
        }else{
        	let popped = this.storage[this.top]
            delete this.storage[this.top]
        	this.top --;
        	return popped;    
        }
    }
    peek () {
        return this.storage[this.top]
    }
}

2. Queue

FIFO : First In, First Out

  • 줄서기를 생각하면 편하다.
  • 은행에 가서 가장 먼저 번호표를 뽑고 줄을 섰으면 가장 빨리 업무를 볼 수 있을 것이다.
  • 마찬가지로 배열로 구현해보았다.
class Queue {
    constructor () {
        this.storage = [];
        this.front = 0;
        this.rear = -1;
    }
    enqueue (element) {
        this.rear ++;
        this.storage[this.rear] = element;

    }
    dequeue () {
        if(this.front - this.rear > 0) {
            return;
        }else{
        	let dequeued = this.storage[this.front];
            delete this.storage[this.front];
            this.front ++;
        	return dequeued;
        }
    }
    peek () {
        return this.storage[this.front];
    }
}
profile
다 늦은 밤, 달밤의 개발일기

0개의 댓글