문홍의 공부장

[자료구조] 스택, 큐, 덱 (Stack, Queue, Deque) 본문

알고리즘/자료구조

[자료구조] 스택, 큐, 덱 (Stack, Queue, Deque)

moonong 2020. 2. 8. 18:38
반응형

스택(stack)

  • 리스트의 한쪽 끝으로만 자료의 삽입/삭제가 이루어지는 자료 구조
  • 후입선출(LIFO) 방식: push(), pop()
  • 깊이 우선 탐색(DFS)에서 사용
  • 용도:
    함수의 콜 스택
    후위 표기법으로 표현된 산술식 연산
    재귀 프로그램의 순서 제어 등

 

큐 (queue)

  • 선형 리스트의 한쪽에서는 삽입이, 다른 한쪽에서는 삭제 작업이 이루어지는 자료 구조
  • 선입선출(FIFO) 방식: push(), get()
  • Front 포인터: 가장 먼저 삽입된 자료의 기억 공간을 가리키는 포인터. 삭제 작업에 사용
  • Rear 포인터: 가장 마지막에 삽입된 자료가 위치한 기억 공간을 가리키는 포인터. 삽입 작업에 사용
  • 용도:
    컴퓨터 버퍼에서 주로 사용(작업 대기 행렬을 버퍼(큐)로 만들어 처리)
    운영체제의 작업 스케쥴링 등

 

덱 (deque)

  • 리스트의 양쪽 끝에서 삽입과 삭제가 모두 발생할 수 있는 자료구조 (Double Ended Queue)
  • Scroll: 입력 제한 덱 (입력이 한쪽에서만 발생하고, 출력은 양쪽에서 일어날 수 있음)
  • Shelf: 출력 제한 덱 (입력은 양쪽에서 일어나고, 출력은 한쪽에서 일어나도록 제한)
  • 용도:
    스케쥴링(스케쥴링이 복잡할수록 스택, 큐보다 덱의 효율이 높을 경우가 있음)
    우선순위 조절 (한 방향으로만 삽입/삭제가 가능한 스택/큐와 달리 양방향으로 삽입/삭제가 가능하기 때문)

 

References:

https://jeong-pro.tistory.com/97
http://itnovice1.blogspot.com/2019/01/blog-post.html

반응형