[Data Structure] 스택과 큐

미래·2023년 6월 1일
0

CS

목록 보기
1/6

📌 스택Stack

스택은 말 그대로 '쌓아 올리는 것'을 의미하고, 스택형 자료 구조 또한 차곡차곡 쌓아 올린 구조를 의미한다.

아래 사진과 같이 같은 구조의 크기와 자료를 정해진 방향으로만 쌓을 수 있는데, top으로 정한 곳으로만 접근할 수 있다. 그러므로 가장 위에 있는 자료가 가장 최신에 입력된 자료이며, 삭제할 때도 top을 통해서만 가능하다.

top을 통해 삽입하는 연산을 'push', 삭제하는 연산을 'pop'이라고 한다.

따라서 스택은 가장 마지막에 삽입된 자료가 가장 먼저 삭제된다는 구조적 특징을 가지게 된다. 이러한 스택의 구조를 후입선출(LIFO, Last-In-First-Out) 구조라고 한다.

📌 대표적인 스택의 예

웹 브라우저 뒤로 가기: 가장 최근의 페이지를 다시 로드
역순 문자열 만들기: 가장 나중에 입력된 문자부터 출력
실행 취소(undo): 가장 나중에 실행된 것부터 취소



📌 큐QUEUE

큐는 스택과 달리 '줄을 서서 기다리는 것'을 의미하는데, 정해진 곳(top)을 통해서 삽입, 삭제가 이루어지는 스택과는 달리 한쪽 끝에서 삽입 작업이, 다른 쪽 끝에서 삭제 작업이 이루어진다. 그렇기에 가장 먼저 들어온 요소가 가장 먼저 삭제된다.

이때 삭제 연산만 수행되는 곳을 프론트(front), 삽입 연산만 이루어지는 곳을 리어(rear)로 정하여 각각의 연산 작업만 수행된다. 이때, 큐의 리어에서 이루어지는 삽입 연산을 인큐(enQueue) 프론트에서 이루어지는 삭제 연산을 디큐(dnQueue)라고 부른다.

📌 큐의 활용 예시

큐는 주로 데이터가 입력된 시간 순서대로 처리해야 할 필요가 있는 상황에 이용한다.

우선 순위가 같은 작업 예약(프린터의 인쇄 대기열)
은행 업무 등 먼저 입력된 업무의 순서대로 이루어지는 작업
너비 우선 탐색(BFS, Breadth-First Search) 구현
캐시(Cache) 구현
프로세스 관리

profile
여전히 에디터, 새롭게 개발자

0개의 댓글