배열 큐 예제

다음은 배열을 사용하는 큐의 구현입니다: 그러나 앞 인덱스 앞에 여유 공간이 있습니다. 새 항목을 대기열에 대 한 해당 공간을 사용 합니다., 즉 다음 항목은 인덱스 0에 저장 됩니다., 다음 1, 앞까지. 이러한 모델을 큐 주위 랩 또는 순환 큐 라고 고정 된 크기 스택 추상화, 용량 변경 되지 않은 상태로 유지, 따라서 맨 위에 도달 하는 경우 스택 개체 예외를 throw 합니다. 스택 클래스의 전체 구현은 ArrayStack.java를 참조하십시오. 순환 큐 구현은 분할의 나머지 부분을 취하여 계산되는 modulo 연산자(표시%)를 사용하여 수행됩니다(예: 8%5는 3). modulo 연산자를 사용 하 여 순환 배열로 큐를 볼 수 있습니다., 여기서 « 래핑 » « 뒤로 % array_size »로 시뮬레이션할 수 있습니다. 후면 및 전면 인덱스 외에도 큐의 요소 수를 계산하기 위한 cur라는 또 다른 인덱스를 유지합니다. 이 인덱스를 갖는 것은 구현의 논리를 단순화. 광범위한 첫 번째 검색에서는 가능한 모든 후계자를 찾아 대기열에 대기열에 넣으며 가장 가까운 모든 가능성을 살펴봅습니다.

항목을 추가하거나 삭제하는 데 필요한 시간은 큐의 항목 수와 관계없이 일정합니다. 따라서 추가 및 삭제 모두 O(1) 작업이 될 수 있습니다. 여기서는 배열을 사용하여 Queue를 구현하려고하며 enqueue (obj), dequeue() 및 isEmpty()와 같은 기본 기능을 제공합니다. 개체 참조를 저장하고 검색시 null을 하지 않으므로 많은 다른 개체를 참조하는 개체에 대한 개체 참조를 저장할 수 있습니다. 이 개체를 큐에서 제거하면 배열에 남아 있으며 가비지 수집되지 않습니다. 크기 필드는 필요하지 않습니다 (단지 queue.length를 사용) 아래 메서드 (i)insert (ii) delete (iii)크기 (iv)를 취소 (v) 큐에 항목을 추가 하려면 큐라는 클래스를 만들고 구현 합니다. 큐가 가득 차면 오버플로 조건이라고 합니다. 큐 제거: 큐에서 항목을 제거합니다. 항목은 푸시되는 순서와 동일한 순서로 나타납니다. 큐가 비어 있으면 언더플로우 조건이라고 합니다.

전면: 대기열에서 프런트 아이템을 가져옵니다. 후면: 대기열에서 마지막 항목을 가져옵니다. 언더플로우 상태: 큐 제거 작업은 큐 의 맨 위에서 항목을 제거합니다. 큐 제거 작업은 이전에 은폐된 항목을 표시하거나 빈 큐를 생성하지만 큐가 비어 있으면 언더플로우 상태로 전환되므로 제거할 큐에 항목이 없습니다. 대기열의 시간 복잡성 : O(1) 큐 제거의 시간 복잡성 : O(n) ArrayList 를 사용하면서와 마찬가지로 크기를 동으로 만들 수 있습니다. 그 부분을 여러분에게 맡기고 ArrayList 구현을 살펴보고 런타임에 큐 크기 증가를 구현하려고 합니다. 큐에서의 작업: 주로 대기열에서 다음과 같은 네 가지 기본 작업이 수행됩니다: 큐 구현을 위해 큐의 배열 구현은 앞면과 후면의 두 인덱스를 추적해야 합니다. 후면에 있는 아이템을 대기열에 두르고 앞에서 항목을 제거합니다. 우리는 단순히 전면 및 후면 인덱스를 증가하면, 문제가있을 수 있습니다, 전면 배열의 끝에 도달 할 수있다. 이 문제에 대한 해결책은 원형 방식으로 전면 및 후면을 늘리는 것입니다(자세한 내용은 이 참조) 스택과 큐의 차이는 제거됩니다.

Ce contenu a été publié dans Non classé. Vous pouvez le mettre en favoris avec ce permalien.

Les commentaires sont fermés.