[자료구조] Stack(스택)과 Queue(큐)

Taeha Kim·2020년 8월 17일
0

Data Structure&Algorithm

목록 보기
6/9
post-thumbnail

1. Stack(스택)

스택 구조를 이해하는데 가장 좋은 예시가 '감자칩 과자' 인거 같습니다.
(감자칩 과자 좋아하시나요? 저는 감자칩 과자 좋아하는데요😁 )

아래의 감자칩 과자가 공장에서 포장되는 과정을 생각해 보면, 우선 하단이 막힌 통에 감자칩 여러개가 순서대로 들어가고 다 차면 뚜껑을 덮겠죠.

편의점에서 이 감자칩 과자를 구매했고, 이제 먹어야 하는 상황을 이라면, 뚜껑을 열고 감자칩을 하나씩 꺼내서 먹어야 하죠
자! 감자칩 통의 맨 위에 있는 감자칩 하나를 생각해보면 공장에서 포장될때 가장 나중에 통에 들어가서 소비자가 구매해서 먹을때는 가장 먼저 감자칩 통에서 꺼내지죠

Stack구조가 이와 같습니다. 맨위에 있는 감자칩처럼 Stack은 마지막으로 저장한 데이터가 가장 먼저 읽힙니다. 이를 LIFO(Last In First Out)라고 합니다.

1.1) push와 pop

Stack에서 데이터 저장push라고 합니다.
Stack에서 데이터를 읽는건 pop 이라고 하며, pop은 읽어들임과 동시에 stack에서 데이터를 삭제합니다.

  • Stack은 나중에 push 된게 먼저 pop 된다.

1.2) Stack은 어디에 사용될까?

  • 뒤로가기
    : 웹 브라우저(크롬, 사파리)에서 뒤로가기 기능을 생각해보면, 뒤로가기 버튼을 누를때마다 최근에 접속한 웹사이트로 이동하는것을 아실겁니다. 뒤로가기 기능에 Stack이 사용된 것이죠

2. Queue(큐)

제가 중학교, 고등학교 다닐때 점심시간에 밥 먹을려고 하면, 급식실가서 한줄로 줄을 섰는데요
이게 Queue를 이해하는데 가장 좋은 예시가 될거 같습니다.

4교시가 끝나면, 가장 먼저 뛰어가서 줄서는 학생이 가장 먼저 밥을 먹을수 있죠ㅋ
(항상 제 앞에서 새치기 하는 친구들은 살포시 잊어 줍시다.)


Queue는 가장 먼저 저장된 데이터가 가장 먼저 읽힙니다. 이를 FIFO(First In First Out)라고 합니다.
(일반적인 Queue 말고도 double ended queue, priority queue 등도 있지만, 나중에 공부하고 나서 내용 추가 하겠습니다;;)

  • Queue는 먼저 push 된게 먼저 pop 된다.

2.1) Queue는 어디에 사용될까?

  • OS 프로세스 스케쥴링 시스템 (priority queue 사용)
  • 인풋 버퍼(Input Buffer)
  • 프린터 작업 관리
  • 맛집 예약 시스템
profile
함께 성장하는 개발자가 되고 싶습니다.

0개의 댓글