반응형
Stack과 Queue는 모두 데이터를 저장하는 자료 구조이지만, 데이터의 삽입과 삭제 방식에서 큰 차이가 있습니다.
1. Stack (스택)
- 동작 방식: 후입선출 (LIFO, Last In First Out) 방식으로 동작합니다. 즉, 가장 나중에 삽입된 데이터가 먼저 삭제됩니다.
- 주요 연산:
- push: 데이터를 스택에 삽입합니다.
- pop: 스택에서 가장 최근에 삽입된 데이터를 삭제하고 반환합니다.
- peek: 스택의 가장 위에 있는 데이터를 삭제하지 않고 확인합니다.
- 사용 예시:
- 함수 호출의 추적(재귀 호출 등)
- 웹 브라우저의 뒤로 가기 기능 (방문한 페이지를 스택처럼 관리)
- 특징:
- 삽입과 삭제가 항상 스택의 맨 위에서만 이루어집니다.
- LIFO 방식으로, 가장 마지막에 들어온 데이터가 가장 먼저 나옵니다.
2. Queue (큐)
- 동작 방식: 선입선출 (FIFO, First In First Out) 방식으로 동작합니다. 즉, 가장 먼저 삽입된 데이터가 먼저 삭제됩니다.
- 주요 연산:
- enqueue: 데이터를 큐에 삽입합니다.
- dequeue: 큐에서 가장 먼저 삽입된 데이터를 삭제하고 반환합니다.
- peek: 큐의 가장 앞에 있는 데이터를 삭제하지 않고 확인합니다.
- 사용 예시:
- 작업 스케줄링 (프린터 대기열, CPU 작업 대기열 등)
- BFS(너비 우선 탐색) 알고리즘
- 특징:
- 삽입은 큐의 뒤에서 이루어지고, 삭제는 큐의 앞에서 이루어집니다.
- FIFO 방식으로, 먼저 들어온 데이터가 먼저 나옵니다.
3. 차이점 요약
Stack (스택) Queue (큐)
동작 방식 | 후입선출 (LIFO) | 선입선출 (FIFO) |
삽입 위치 | 맨 위에 삽입 | 맨 뒤에 삽입 |
삭제 위치 | 맨 위에서 삭제 | 맨 앞에서 삭제 |
사용 예시 | 함수 호출 추적, 웹 브라우저 뒤로 가기 | 작업 스케줄링, BFS 탐색 |
4. 예시
- Stack: 웹 브라우저의 방문 기록(뒤로 가기), 수식 계산(후위 표기법), 재귀 함수의 호출 스택 등
- Queue: 프린터 대기열, 고객 서비스 대기줄, 프로세스 스케줄링 등
이처럼 Stack은 나중에 들어온 것이 먼저 나가는 구조, Queue는 먼저 들어온 것이 먼저 나가는 구조로, 용도에 맞게 각각 활용됩니다.
728x90