SSAFY/Python문법 정리

[Python] 큐의 구조

황성안 2021. 3. 3. 16:57
728x90

 - 선입 선출 ( FirstInFirstOut - FIFO )

 

 공백 큐 생성createQueue()

-1 || front = rear= -1 0 || 1 ||

 

원소 a 삽입 enQueue(A);

-1 || front = -1 0 || A가 삽입됨 || rear 1 ||

 

원소 B삽입 : enQueue(B)

-1 || front = -1 0 || A가 삽입됨 || 1 || B가 삽입됨 || rear

front = -1

 

선형 큐

- 문제점

  잘못된 포화상태 인식

선형 큐를 이용하여 원소의 삽입과 삭제를 계속할 경우, 배열의 앞 부분에 활용할 수 있는 공간이 있음에도 불구하고, rear = n-1 인 상태 즉, 포화상태로 인식 더이상 삽입을 수행하지 않는다.

<포화상태로 잘못 인식>

0 || 1 || 2 || front 3 || rear

 해결방법

매 연산이 이루어질 때마다 저장된 원소들을 배열의 앞부분으로 모두 이동시킴

원소 이동에 많은 시간이 소요되어 큐의 효율성이 급격히 떨어짐

<큐의 원소들을 이동>

0 || rear 1 || 2 || 3 ||

 ㄴ 공백부분이 front 가온다.

 

초기 공백 상태 

front = rear = 0 

                       왜 -1에서 시작안하죠? 어차피 원형으로 빙둘러서 하기떄문에

 

 원형의 Q라고 생각해주세요.

1) enQueue(C); 

0 || 1 || front 2 || B 3 || C || rear

2) enQueue(D); 

0 || D || rear 1 || front 2 || B 3 || C || rear
728x90

'SSAFY > Python문법 정리' 카테고리의 다른 글

[JS] 새로고침 없이 좋아요, Follow 하기  (0) 2021.05.06
[Python] Prim 알고리즘  (0) 2021.04.21
[Python] 스택 2  (0) 2021.02.24
[Python] 스택  (0) 2021.02.23
[Python] 형변환(atoi, itoa) 및 패턴 매칭  (2) 2021.02.19