Stack vs. Queue
스택(Stack)과 큐(Queue)는 컴퓨터 과학에서 널리 사용되는 선형 자료구조로, 데이터의 저장 및 처리 방식에서 차이가 있다.
스택(Stack)
스택은 후입선출(LIFO, Last-In First-Out) 방식의 자료구조로, 가장 마지막에 삽입된 데이터가 가장 먼저 제거된다.
데이터의 삽입과 삭제는 모두 스택의 **탑(top)**에서 이루어진다.
- 주요 연산:
- 삽입(Push): 데이터를 스택의 탑에 추가한다.
- 삭제(Pop): 스택의 탑에 있는 데이터를 제거하고 반환한다.
- 탑 확인(Peek): 스택의 탑에 있는 데이터를 제거하지 않고 확인한다.
- 비어있는지 확인(IsEmpty): 스택이 비어 있는지 여부를 확인한다.
큐(Queue)
큐는 선입선출(FIFO, First-In First-Out) 방식의 자료구조로, 가장 먼저 삽입된 데이터가 가장 먼저 제거된다.
데이터의 삽입은 **후단(Rear)**에서, 삭제는 **전단(Front)**에서 이루어진다.
- 주요 연산:
- 삽입(Enqueue): 데이터를 큐의 후단에 추가한다.
- 삭제(Dequeue): 큐의 전단에 있는 데이터를 제거하고 반환한다.
- 전단 확인(Peek/Front): 큐의 전단에 있는 데이터를 제거하지 않고 확인한다.
- 비어있는지 확인(IsEmpty): 큐가 비어 있는지 여부를 확인한다.
스택과 큐의 비교
특징 | 스택 (Stack) | 큐 (Queue) |
---|---|---|
접근 방식 | 후입선출 (Last In, First Out; LIFO) | 선입선출 (First In, First Out; FIFO) |
기본 연산 | push, pop, peek | enqueue, dequeue, peek |
데이터 삽입 위치 | 최상단 (Top) | 뒤쪽 (Rear) |
데이터 삭제 위치 | 최상단 (Top) | 앞쪽 (Front) |
구현 방식 | 배열, 연결 리스트 | 배열, 연결 리스트 |
응용 분야 | 함수 호출, 역순 처리, undo/redo 기능 | 작업 스케줄링, 실시간 데이터 처리, 브라우저 히스토리 관리 |