📌큐(queue)와 스택(stack)
- 규칙 개념의 자료구조
- 배열처럼 실제로 존재하는 개념이 아니다!
- 문법으로 구현된 것이 아니라는 의미
- 예) 배열 : 자료구조이지만 문법으로도 사용할 수 있다.
arr = ["사과", "복숭아", "청포도"]
- BUT! 큐나 스택은 문법이 따로 없다!
- WHY? 큐나 스택은 기존 프로그래밍 언어의 문법으로 데이터를 저장할 때 어떤 규칙만 부여하기만 하면 되기 때문이다.
예) 배열 + 큐의 규칙 = 큐
이러한 개념을 "추상 자료구조(abstract data type, ADT)"
📌스택(stack)
☑️스택이 따라야 하는 규칙
⇒ 팬케이크 쌓기 규칙!
- 팬케이크를 맨 위에 있는 것부터 먹는 것처럼
- 배열이 수직으로 쌓여 있다고 생각하고 맨 위를 정한다.
- 맨 위라고 정해 놓은 부분에서만 값을 추가하거나 삭제한다.
- 데이터를 중간에서 빼거나 할 수 없다.
규칙 1 : 위에서 데이터를 쌓는다.
규칙 2 : 위에서부터 데이터를 뺀다.
❗LIFO (Last In, First Out)
📌큐(queue)
☑️큐가 따라야 하는 규칙
⇒ 버스 정류장 줄 서기 규칙!
- 버스 정류장에서 가장 먼저 줄을 선 사람이 먼저 타는 것처럼
- 먼저 들어온 데이터가 먼저 빠져나간다.
규칙 1 : 위로 데이터를 쌓는다.
규칙 2 : 아래에서부터 데이터를 뺀다.
❗FIFO (First In, First Out)
⭐ 큐와 스택은 뭘로 구현해도 상관 없이 규칙만 지키면 된다.
(여기서는 배열을 예로 들었을 뿐)
📌스택, 큐 사용 예시
1. 웹 브라우저의 뒤로 가기 버튼
- 웹 브라우저의 뒤로 가기 버튼은 스택이다.
- 페이지를 A, B, C 순서로 방문했을 때 뒤로 가기 버튼을 누른다.
= C를 빼고 B로 간다.
= 맨 마지막에 방문한 것을 빼는 규칙이 있는 스택으로 구현한다.
2. 되돌리기 단축키도 스택
3. 쇼핑몰 주문 처리 시스탬
- 쇼핑몰 주문 처리 시스템은 큐!
- 주문이 들어온 순서대로 데이터를 쌓고, 가장 먼저 온 주문부터 처리한다.