[자료구조] 스택(Stack)과 큐(Queue)에 대해서 알아보자!
❕Data structure

[자료구조] 스택(Stack)과 큐(Queue)에 대해서 알아보자!

📌 스택(Stack)이란 무엇일까? 

 

LIFO(Last In First Out)

 

스택(Stack)은 "쌓다"라는 의미로, 데이터를 차곡차곡 쌓아 올린 형태의 자료구조입니다. 조금 더 설명하자면, 위의 사진과 같이 데이터가 순서대로 쌓이며 가장 마지막에 삽입된 자료가 가장 먼저 삭제되는 구조를 가지고 있습니다.

 

간단한 예시로는 책상에 책을 쌓아두는 것과 포개 둔 일회용 종이컵을 하나하나 꺼내서 사용하는 것으로 예시를 들 수 있을거같네요 😋

 

또한 스택은 정해진 방향으로만 쌓을 수 있으며, top으로 정한 곳을 통해서만 접근할 수 있습니다. 새로 삽입되는 자료는 top이 가리키는 가장 맨 위에 쌓이게 되며, 자료를 삭제할 때도 top을 통해서 삭제가 가능합니다.

 

그리고 스택에서는 삽입 연산을 push, 삭제 연산을 pop이라고 하며, 이러한 스택의 구조를 후입 선출의 구조라고 하며, 줄여서 LIFO(Last In First Out)라고 부릅니다.

 

스택(Stack)의 사용 사례

  • 웹 브라우저 방문기록 (뒤로 가기)
  • 실행 취소(undo)
  • 역순 문자열 만들기
  • 후위 표기법 계산

 

 

📌 큐(Queue)의 개념

FIFO(First In First Out)

 

큐(Queue)는 스택(Stack)과 다르게 먼저 들어온 것이 먼저 나가는 "선입선출"로, FIFO(First In First Out)의 구조를 가지고 있습니다.

 

일반적으로 카페에서 먼저 와서 주문한 손님이 음료를 먼저 받고 나가는 것을 예시로 들면 좋을 것 같네요.

 

삭제 연산이 수행되는 곳을 프론트(front), 삽입 연산이 이루어지는 곳은 리어(rear)로, FIFO 구조를 위해서 스택과 다르게 큐의 한쪽 끝에는 삽입 작업이, 다른 한쪽 끝에서는 삭제 작업이 나뉘어서 이루어지고 있습니다.

 

큐는 리어(rear)에서 이루어지는 삽입 연산을 인큐(Enqueue)라고 부르며, 프론트(Front)에서 이루어지는 삭제 연산을 디큐(Dequeue)라고 부릅니다.

 

큐(Queue)의 사용 사례

  • 은행 업무 
  • 대기열 순서와 같은 우선순위의 작업 예약 등
  • 서비스 센터의 대기시간
  • 프로세스 관리

 


 

Reference

스택(Stack)과 큐(Queue) 이해하기
스택(STACK), 큐(QUEUE) 개념/비교/활용 예시