stack이란 쌓아 올린다는 것을 의미합니다
따라서 스택 자료구조라는 것은 책을 쌓는 것처럼 차곡차곡 쌓아 올린 형태의
자료구조를 뜻합니다.
스택은 같은 구조와 크기의 자료를 정해진 방향으로만 쌓을 수 있고
top으로 정한 곳을 통해서 접근할 수 있습니다.
가장 위에 있는 자료는 가장 최근에 들어온 자료를 가리키며
삽입되는 새 자료는 top이 가리키는 사료의 위에
쌓이게 됩니다.
스택에서 자료를 삭제할 때도 top을 통해서만 가능합니다.
스택에서 top을 통해 삽입하는 연산을 push, 삭제를 pop이라고 합니다.
따라서 스택은 시간 순서에 따라 자료가 쌓여서
가장 마지막에 삽입된 자료가 가장 먼저 삭제된다는
구조적인 특징을 갖게 됩니다.
이러한 스택의 구조를 Last -in First-out 이라 부르는
후입선출 이라고 합니다.
스택의 활용 예시로는
웹 브라우저 방문기록 뒤로가기
역순 문자열 만들기
실행취소
후위 표기법 계산 등이 있다.
Queue는 스택과 다르게 선입선출 First-in First-out 의 방식의 자료구조를 말합니다.
큐의 특징으로는 정해진 top을 통해 삽입과 삭제가 이루어지는 스택과 달리
큐는 한 쪽 끝에서 삽입 작업이, 다른 쪽 끝에서 삭제 작업이 이루어집니다.
큐의 가장 첫 원소를 head 가장 끝 원소를 tail라고 합니다.
큐는 들어올 때 tail 로 들어오지만 나올때는 head 부터 빠지는
선입선출의 특성을 가지고 있습니다.
가장 먼저 들어온 프론트 원소가 가장 먼저 삭제가 됩니다.
즉, 큐에서는 프론트 원소는 가장 먼저 큐에 들어왔던 첫번째 원소가 되는것이고
리어 원소는 가장 늦게 큐에 들어온 마지막 원소가 되는 것입니다.
큐는 주로 데이터가 입력된 시간 순서대로 처리해야 할 필요가 있는 상황에 이용합니다.
활용사레:
프린터의 인쇄 대기열
은행업무
콜센터 고객 대기시간
프로세스 관리
너비우선 탐색 구현
캐시 구현에 활용합니다.
큐의 종류에는 원형큐, 우선순위큐가 대표적으로 존재합니다.
Stack | Queue |
Last in, First Out | First In First Out |
push(삽입), pop(삭제) | enqueue(삽입), dequeue(삭제) |
함수 호출, 후위표기법 계산 | 프린터 대기열, 버퍼관리, 스케줄링 알고리즘 |
배열 연결리스트로 구현 가능 | 배열 연결리스트로 구현 가능 |
스택과 큐의 가장 큰 차이점은 내부 동작 방식입니다. 스택은 후입선출(LIFO), 큐는 선입선출(FIFO)입니다. 스택은 삽입과 제거가 동일한 쪽에서 이루어지며 최상위(top)에만 접근이 가능합니다. 반면 큐는 삽입과 제거가 서로 다른 쪽에서 이루어지며 큐의 처음(헤드, head)에서 데이터를 삭제하고 큐의 끝(테일, tail)에서 데이터를 추가합니다.
즉, 스택과 큐는 자료구조의 기본 개념 중 하나입니다. 다양한 상황에서 적절하게 활용함으로써 데이터 구조의 효율적인 관리가 가능합니다.
어떤 상황에서 어떤 자료구조가 좋은지
시나리오를 짜봐라
Array와 LinkedList를 비교설명하시오 (0) | 2024.04.15 |
---|