yehey's 공부 노트 \n ο(=•ω<=)ρ⌒☆

큐 (Queue) 본문

기타 기본 지식

큐 (Queue)

yehey 2020. 10. 20. 16:08

큐 (Queue)

FIFO 구조를 갖는 데이터 저장 방식

큐 ADT

객체: 0개 이상의 요소들로 구성된 선형리스트

(큐의 첫번째 요소를 가리키는 front와 마지막 요소를 가리키는 rear가 있음)

연산:

  • create
  • init
  • is_empty
  • is_full
  • enqueue
  • dequeue
  • peek

배열을 이용한 선형 큐

초기 상태: front = rear= -1

데이터를 enqueue할 때마다 rear는 1씩 증가, 데이터를 dequeue할 때마다 front 1 증가

크기에 제한이 있고, 한번 dequeue한 공간을 재사용하기 어렵다.

=>메모리가 낭비된다.

연결리스트를 이용한 선형 큐

필요할 때마다 노드를 생성해서 연결 => 메모리 낭비 방지

dequeue 할 때 메모리 공간을 놓아주어야함

초기 front와 rear 포인터는 NULL을 가리키며, 큐가 비어있을 때도 NULL을 가리킴

 

-구현이 복잡해짐

배열을 이용한 원형큐

front는 첫번째 data 하나 앞의 index

rear는 마지막 요소의 index

초기 front=rear=1

공백 상태: front==rear

포화 상태: front % size == (rear+1) % size

(나머지 연산을 해야함! 아니면 front, rear 값이 index 보다 커져서 존재하지 않기 때문)

공백 상태와 포화 상태를 구별하기 위해서 front가 가리키는 공간은 항상 비워둔다! 데이터를 채우지 않음!

 

- size-1 개의 원소를 계속 넣을 수 있음

-낭비되는 공간이 배열을 이용한 선형큐에 비해 적음

-최대 크기에 제한이 있음

'기타 기본 지식' 카테고리의 다른 글

크롤링 (crawling)  (0) 2020.11.10
웹 스캐너  (0) 2020.11.10
스택 구조 (Stack )  (0) 2020.10.20
List (연결리스트)  (0) 2020.10.20
재귀 함수  (0) 2020.10.20
Comments