2016-07-22 4 views
1

Ich habe eine Warteschlange der Größe 5 erstellt. Ich habe 5 Werte in die Warteschlange (1,2,3,4,5) eingefügt. jetzt ist mein vorderer Wert auf dem Index 0 und mein hinterer Wert zeigt auf den Index 4 (die letzte Position meiner Warteschlange). Jetzt habe ich ein Element aus der Warteschlange entfernt und so hat meine Warteschlange jetzt nur noch (2,3,4,5). Jetzt ist meine Warteschlange nicht voll, da sie eine freie Position hat. Nur 4 Werte werden gefüllt und ein Wert wird entfernt. Wie kann ich einen neuen Wert für diesen leeren Ort in meiner Warteschlange eingeben?Wie Elemente zu einer Warteschlange hinzugefügt werden, wenn die Warteschlange bereits voll ist und einige Werte dann entfernt werden?

Antwort

0

Sie haben

Für Enqueue zu verwenden:

rear = (rear+1)%MAX_SIZE; 

So, jetzt, wenn hinten an Endposition ist, und es gibt freien Raum vor dann der folgende Code Rückkehr des Index in Kreis starten Weg.

Für Dequeue:

front = (front+1)%MAX_SIZE; 

Ähnlich im Fall von dequeue.

Hinweis:

Sie haben Zustand zu setzen, wenn das Array leer oder voll in Ihrem Code. Auch wenn vorne und hinten an derselben Position sind, bedeutet dies, dass das Array jetzt leer ist und Sie beiden den leeren Positionsindex zuweisen müssen.

-1

diesen Zustand setzen 1. Wenn (COUNT = MAX), dann a. Anzeige "Warteschlangenüberlauf"; b. Rückkehr; 2. Sonst a. Wenn (REAR = MAX) dann i. HINTEN: = 1; b. Sonst i. HINTEN: = HINTEN + 1; c. WARTESCHLANGE (HINTEN): = ARTIKEL; d. COUNT: = COUNT + 1; 3. Zurück;

Verwandte Themen