[TIL-20210617] 스택(Stack) & 큐(Queue)

Pizzahand·2021년 6월 20일
0

TIL

목록 보기
14/28

스택

스택은 데이터(data)를 순서대로 쌓는 자료구조로 입력과 출력이 하나의 방향으로 이루어지는 제한적 접근에 있다. 이런 스택 자료구조의 정책을 LIFO(Last In First Out) 혹은 FILO(First In Last Out)라 부르기도 한다.

[그림] 스택의 구조

스택 관련 메소드

  • push() : push를 이용하여 해당 stack의 top에 데이터를 추가한다.
  • pop() : pop을 이용하여 가장 나중에 추가된 데이터가 가장 먼저 추출한다.

스택의 실 사용 예

실 사용의 대표적인 예로 우리가 자주 사용하는 브라우저의 뒤로 가기, 앞으로 가기 기능을 구현할 때 자료구조 Stack이 활용된다.

[그림] 스택의 실사용 예(브라우저의 앞으로가기, 뒤로가기)
출처 : Codestates

브라우저에서 자료구조 Stack이 사용될 때 동작 순서

  1. 새로운 페이지로 접속할 때, 현재 페이지를 Prev Stack에 보관한다
  2. 뒤로 가기 버튼을 눌러 이전 페이지로 돌아갈 때에는, 현재 페이지를 Next Stack에 보관하고 Prev Stack에 가장 나중에 보관된 페이지를 현재 페이지로 가져온다
  3. 앞으로 가기 버튼을 눌러 앞서 방문한 페이지로 이동을 원할 때에는, Next Stack의 가장 마지막으로 보관된 페이지를 가져온다
  4. 마지막으로 현재 페이지를 Prev Stack에 보관한다

자료구조 큐는 스택과 반대되는 개념으로 먼저 들어간 데이터가 먼저 나오는 FIFO(First In First Out) 혹은 LILO(Last In Last Out) 을 특징으로 가지고 있다. 이런 특징을 따라 큐는 데이터가 입력된 순서대로 처리할 때 주로 사용한다.

[그림] 큐의 구조

큐 관련 메소드

  • push() 또는 unshift() : 큐의 rear에 데이터를 추가한다.
  • pop() 또는 shift() : 큐의 front에 있는 데이터를 출력한다.

큐의 실 사용 예

[그림] 큐의 실사용 예(프린터의 인쇄작업 순서)
출처 : Codestates

큐의 동작 순서

  1. 큐의 rear에 데이터가 추가된다.
  2. 추가된 데이터가 front로 이동한다.
  3. 큐의 사이즈에 따라 다음 데이터가 rear에 추가된다.
  4. front에 있는 데이터가 출력된다.
profile
재밌게 코딩하고 싶은 개발자!

1개의 댓글

comment-user-thumbnail
2021년 6월 27일

오랜만에 보는 스택과 큐네요.... 섹션2에서 또 보는군요...

답글 달기