[Data Structure] #3. Stack & Queue [작성중]

HELLO WORLD🙌·2020년 5월 26일
0

TIL

목록 보기
10/23

1. Stack

  • 마지막으로 저장한 데이터가 처음으로 읽힌다.
  • 영어로 하면 LIFO(Last In First Out)
  • Stack에서 데이터 저장은 push 
  • 데이터를 읽어들이는 건 pop 
    다만 pop은 읽어들임과 동시에 stack에서 삭제한다.

Stack의 활용

  • 웹브라우저 방문기록(뒤로가기) 및 실행취소
  • 미로찾기 알고리즘
    → 방문한 곳을 좌표로 표기하고, 다음 방문할 곳을 탐색한 후 Stack에 가능한 곳 전부를 push하고, 다시 pop 하면서 현재 경로로 변경하는 것을 반복

예시

// PancakeStack 클래스 정의
class PancakeStack {
  constructor() {
		// 빈 접시배열 선언
    this.plate = [];
  }
  
	// push함수는 팬케이크를 쌓는(stack하는) 함수
  push = pancake => this.plate.push(pancake);
  
	// pop함수는 쌓인 팬케이크 중 가장 위쪽 팬케이크 1장을 먹는 함수
  pop = () => {
   if (this.plate.length === 0)
     return "다 먹었슈";
	 else {
     this.plate.pop(); 
    }  
	}

	// peak함수는 쌓인 팬케이크에서 가장 위쪽에 위치한 팬케이크가 무엇인지 알려주는 함수
  peak = () => this.plate[this.plate.length-1];

	// isEmpty함수는 빈 접시인지 아닌지 true/false로 알려주는 함수
  isEmpty = () => this.plate.length === 0;
	
	// printStack함수는 접시 위에 팬케이크가 몇 장 쌓여있는지 알려주는 함수
  printStack = () => `접시 위에 팬케이크 ${this.plate.length}장이 쌓여 있습니다.`;
}

0개의 댓글