[자료구조] Stack & Queue

쩡쎈·2022년 1월 20일
0

CS

목록 보기
5/7

Stack

Stack

  • 후입선출 (LIFO) 구조
  • 입력(push), 출력(pop또는 poll), top 원소 확인(peek), 해당 값이 스택에서 몇 번째에 있는지(search) 등
  • Random Access(비순차적 접근) 불가
  • 삽입/숙제의 시간복잡도는 O(1)
  • 재귀 알고리즘 사용 시 유용
  • 사용 : 함수의 콜스택, 문자열 역순 출력, 연산자 후위표기법 등

Queue

Queue

  • 선입선출 (FIFO) 구조
  • 큐의 가장 첫 원소를 front, 끝 원소를 rear라고 부름
  • 들어올 때 rear로 들어오지만(enQueue), 나갈 때는 front부터 빠지는(deQueue) 특성을 지님
  • 사용 : BFS, Buffer, 캐시 구현 등
  • Java Collection에서 Queue는 인터페이스이다. 이를 구현하고 있는 Priority Queue 등 사용 가능
  • 원형 큐, 우선순위 큐, 데크(Deque) 등이 있음

Java Collection 시간복잡도


Circular Queue

Circular Queue

  • 선형 큐에서 배열의 앞 부분이 비게되는 한계점을 해결하기 위해 구조화한 자료구조
  • 큐의 마지막 인덱스에서 다음 인덱스로 넘어갈 때 (rear+1)%MAX_QUEUE_SIZE가 되며 첫 인덱스부터 다시 데이터 삽입이 가능
  • 포화상태일 경우, front == (rear+1)%MAX_QUEUE_SIZE

Priority Queue

  • 원소들에 우선순위를 매겨서 큐에 집어넣음
  • 삽입 순서와 관계없이 우선순위가 높은 원소부터 출력된다.
  • 배열, 연결리스트, 힙으로 구현 가능 -> 힙으로 구현하는 것이 가장 효율적!
자료구조정렬된 배열 / 순서 없는 배열정렬된 연결 리스트 / 순서 없는 연결리스트
삽입O(n)/O(1)O(n)/O(n)O(logn)
삭제O(1)/O(n)O(1)/O(n)O(logn)

Deque

Deque

  • 양쪽에서 모두 삽입/인출이 가능한 큐
  • 스택과 큐의 장점을 가지고 만들어짐
  • 입력이 한 쪽에서만 가능하고 출력은 양쪽 다 가능한 경우 Scroll
  • 출력이 한 쪽에서만 가능하고 입력이 양쪽에서 다 가능한 경우 Shelf
profile
모르지만 알아가고 있어요!

0개의 댓글