[Data structure] 스택(Stack)과 큐(Queue)
스택 (Stack)
스택은 후입선출(LIFO, Last In First Out) 방식으로 데이터를 저장하는 자료구조.
즉, 가장 최근에 추가된 데이터가 가장 먼저 제거.
주요 연산
푸시(Push): 스택에 데이터를 추가.
팝(Pop): 스택에서 가장 최근에 추가된 데이터를 제거하고 반환.
피크(Peek): 스택의 가장 위에 있는 데이터를 반환. 데이터는 제거하지 않음.
비어있는지 확인(Empty): 스택이 비어 있는지를 확인.
장점
빠른 인덱스 접근: 스택의 가장 위에 있는 데이터에 즉시 접근할 수 있음.
단순한 구현: 스택은 구현이 간단하고, 재귀 호출 시 함수의 상태를 관리하는 데 유용.
단점
제한된 접근: 스택의 중간이나 아래에 있는 요소에 직접 접근할 수 없음.
메모리 낭비: 스택이 너무 커지면 메모리 사용이 비효율적이 될 수 있음.
큐 (Queue)
큐는 선입선출(FIFO, First In First Out) 방식으로 데이터를 저장하는 자료구조.
즉, 가장 먼저 추가된 데이터가 가장 먼저 제거.
주요 연산
인큐(Enqueue): 큐에 데이터를 추가.
디큐(Dequeue): 큐에서 가장 먼저 추가된 데이터를 제거하고 반환.
프론트(Front): 큐의 가장 앞에 있는 데이터를 반환. 데이터는 제거하지 않음.
비어있는지 확인(Empty): 큐가 비어 있는지를 확인.
장점
순서 유지: 데이터를 추가한 순서대로 처리할 수 있어, 작업의 순서를 보장.
효율적인 처리: 서버 요청 및 프로세스 관리를 위한 다양한 작업에 적합.
단점
느린 접근: 큐의 중간이나 뒤에 있는 요소에 즉시 접근할 수 없음.
메모리 사용: 큐의 크기가 커지면 메모리 사용이 비효율적이 될 수 있음.
요약
특성 | 스택 (Stack) | 큐 (Queue) |
---|---|---|
데이터 처리 방식 | 후입선출 (LIFO) | 선입선출 (FIFO) |
주요 연산 | 푸시, 팝, 피크 | 인큐, 디큐, 프론트 |
접근 시간 | O(1) (가장 위의 요소) | O(1) (가장 앞의 요소) |
사용 예 | 함수 호출 관리, 웹 브라우저의 뒤로 가기 기능 | 프린터 작업 관리, 프로세스 관리 |