자료구조

큐 Queue

스누징어 2021. 1. 2. 01:10

큐 Queue

 

개념

* First in first out. 먼저 들어간 자료가 가장 먼저 나오는 구조이다.

* 양쪽에 구멍이 뚫린 느낌

 

제약

* 가장 앞에 있는 요소만 접근 가능하다. (중간이나 뒤에서 자료 접근 불가 )

 

 

삽입 (Enqueue)

<시작 or 메모리가 끝까지 채워지기 전>

* 그냥 차곡차곡 넣으면 됨. 

* 시간 복잡도 = O(1)

 

<메모리가 끝까지 채워졌는데, 앞부분에 빈 공간이 있을 때>

* 큐는 앞부분부터 자료가 빠져나가기 때문에 생기는 구조

* 다시 0부터 채워짐 (물론 비어있으면 ^^)

 

<결론>

* 메모리가 얼마나 쌓여있는가를 체크하는 변수가 2개인 것! (처음과 끝)

* 메모리의 끝이 다 사용되었고, 앞부분이 비어있다면

  다시 앞부분부터 채워지는 순환고리 형태의 메모리 사용을 볼 수 있다.

 

 

제거 (Dequeue)

* 큐가 얼마나 쌓여있는가를 처음과 끝을 가지고 판단한다.

* 처음이 가리키고 있는 부분을 다음으로 넘긴다.

* 시간 복잡도 = O(1)

 

 

검색

* Enqueue와 Dequeue만 할줄아는 큐에서 검색은 정신 나간다.

* 중간에 원하는 데이터를 찾았다고 해도 요소를 모두 빼낸 후 다시 집어넣어야한다. (순서 때문에)

  스택은 원하는 데이터를 찾은 부분부터 다시 요소를 집어넣으면 되지만 큐는 그러면 순서가 꼬여버린다.

  큐는 통로 형식이기 때문! 

* 모든 요소를 어차피 다 빼내야 한다면 차라리 다른 큐를 만들어서 집어넣으면 위에보단 빠르다.

* 어쩌피 시간 복잡도 = O(n)

 

 

언제 사용하냐?

* 자료의 처리속도보다 유입속도가 더 빠를 때 

* 입출력 스트립 버퍼

* 대기줄처럼 순서대로 들어가야 할 때

 

 

 

 

 

 

 

 

 

 

 

귀여운 그림은 낡은 창고님이 그리셨습니다.

반응형