개발/자료구조

스택(Stack)과 큐(Queue): 개념과 활용 방법

심집사 2023. 7. 11. 01:39

 

스택(Stack)과 큐(Queue): 개념과 활용 방법

 

스택(Stack)과 큐(Queue)은 자료구조의 기본 개념 중 하나입니다. 이 글에서는 스택과 큐의 개념, 내부 동작 방식, 그리고 각각의 활용 방법에 대해 살펴보겠습니다.

 

 

스택(Stack)

스택은 후입선출(LIFO, Last-In-First-Out)의 구조를 가진 자료구조입니다. 스택의 내부 동작 방식은 데이터의 삽입(push)과 제거(pop)가 동일한 쪽에서 이루어지며, 최상위 항목(top)에만 접근이 가능합니다. 스택의 활용 방법으로는 함수 호출(Stack-based memory allocation) 등이 있습니다.

 

큐(Queue)

큐는 선입선출(FIFO, First-In-First-Out)의 구조를 가진 자료구조입니다. 큐는 데이터의 삽입(enqueue)과 제거(dequeue)가 서로 다른 쪽에서 이루어지며, 큐의 처음(헤드, head)에서 데이터를 삭제하고 큐의 끝(테일, tail)에서 데이터를 추가합니다. 큐의 활용 방법으로는 프린터 출력 대기열(Printer queue) 등이 있습니다.

 

스택(Stack)과 큐(Queue)의 차이점

스택과 큐의 가장 큰 차이점은 내부 동작 방식입니다. 스택은 후입선출(LIFO), 큐는 선입선출(FIFO)입니다. 스택은 삽입과 제거가 동일한 쪽에서 이루어지며 최상위(top)에만 접근이 가능합니다. 반면 큐는 삽입과 제거가 서로 다른 쪽에서 이루어지며 큐의 처음(헤드, head)에서 데이터를 삭제하고 큐의 끝(테일, tail)에서 데이터를 추가합니다.

 

스택(Stack)과 큐(Queue)의 활용 방법

스택과 큐는 다음과 같은 상황에서 활용됩니다.

  • 스택(Stack)
    • 함수 호출의 실행 컨텍스트를 저장하는 데 사용됩니다.
    • 수식의 계산 과정을 처리하는 데 사용됩니다.
    • 브라우저에서 방문 기록을 저장하는 데 사용됩니다.
  • 큐(Queue)
    • 프린터 출력 대기열(Printer queue)과 같이 대기열을 처리할 때 사용됩니다.
    • 데이터의 순서를 유지해야 하며, 처리할 큐의 크기가 고정되어 있고 처리량이 많은 경우 사용됩니다.

결론

스택과 큐는 자료구조의 기본 개념 중 하나입니다. 스택은 후입선출(LIFO), 큐는 선입선출(FIFO)의 구조를 가지며, 각각의 활용 방법에 대해 이해할 필요가 있습니다. 다양한 상황에서 적절하게 활용함으로써 데이터 구조의 효율적인 관리가 가능합니다.