●Quene
▷데이터를 순차적으로 저장하는 자료 구조, First-in-First-out.
▶ADT
▷임의의 Object를 저장
▷삽입/삭제는 First-in-First-out 규칙을 따름
▶주요 명령
▷void queue(object): 데이터를 queue의 마지막에 삽입
▷object dequeue(): 가장 앞에 있는 데이터를 삭제함. 삭제한 데이터를 반환함.
▶보조 명령
▷object front(): 가장 앞에 있는 데이터를 반환함. (dequeue()과 다르게 삭제하지 않음)
▷int size(): 저장된 원소의 개수를 반환함.
▷bool empty(): 저장된 원소가 없으면 true 반환.
▶Exception
▷QueueEmpty: 빈 Queue의 요소에 접근하려 할 때. (front, dequeue)
▷QueueFull: Queue가 저장가능한 요소 이상으로 저장하려 할 때.
▶활용
▷직접: 대기열, Multiprogramming
▷간접: algorithm의 보조 데이터 구조, 다른 데이터 구조의 일부
○STL Queue
▷STL에서 제공하는 Queue타입, Vector를 기반으로 만들었으며 크기가 가변적임
○C++ Queue
○Array-based Queue
▷N size의 배열을 환형 순환형식으로 사용.
▷3개의 변수 필요
▷f: 처음 요소의 index
▷r: 끝 요소 다음의 index (다음에 넣을 index)
▷n: queue에 있는 요소들의 개수
○Linked-List-based Quene
▷Linked-List-based Stack과 비슷하지만, enquene은 Linked-List의 마지막에 새로운 요소를 삭제함.
○Circularly Linked-List-based Quene
▷Linked-List-based Quene에서 enquene의 효율성을 위해 양쪽 끝을 연결한 것.
▷가장 마지막 요소의 포인터인 cursor 변수를 이용. (cursor->next : 가장 처음 요소)
◎코드 (Elem: String)
▷Node
▷Circulary Linked List
▷Linked Quene