Programmierer verwenden Warteschlangen Datenstrukturen , dass die Arbeit durch die First In, First Out ( FIFO) -Richtlinie darstellen . Dies bedeutet, dass alle Daten in die Struktur eingegeben werden , um eine Liste von Daten anzuhängen, und Daten, die in der Liste der am längsten ist wird das erste entfernt werden. In der Programmiersprache C , ein Programmierer am besten implementiert eine Grundform dieser Struktur mit einer verketteten Liste und verschiedene Hinweise auf die Reihenfolge der Daten zu erhalten . Anleitung
1
Erstellen der Datenknoten Struktur und die Liste Struktur . Um für die verknüpfte Liste, um als Warteschlange funktionieren , muss die Liste Knoten enthalten kann Referenzierung der nächste Knoten in der Liste und zwei Zeiger , die auf den Beginn und das Ende der Liste . Diese Beispiel Strukturen zeigen eine grundlegende Vorlage für die Liste von Knoten und der Queue -Struktur :
struct node {
int data ;
struct Node * next ;
< p > };
struct { queue_list
struct * Knoten zuerst; //Zeiger auf das erste Element
struct * Knoten letzten //Zeiger auf das letzte Element
}
2
Implementieren einer Dateneinfügung Algorithmus . In einer Warteschlange , sollte das Programm immer anhängen die Daten an das Ende der Liste . Darüber hinaus muss die Liste das letzte Element verweisen , so dass zukünftige Einfügungen wissen, auf welchem Ende anfügen . Das folgende Beispiel zeigt einen einfachen Algorithmus , um einen Knoten mit Daten in eine Warteschlange anhängen :
nichtig Einsatz ( struct * Warteschlange q , int value) {
struct Knoten * newNode = malloc ( sizeof ( struct node ) );
newNode -> data = Wert;
newNode -> next = NULL;
if ( q- > first == NULL) {
q- > first = q- > last = newNode ; //wenn Liste leer ist, erste und letzte = newNode
}
else {
q- > last -> next = newNode //append newNode nachdem letzte Element
q- > last = zuletzt -> next ; //Punkt "letzte" Zeiger auf die neuen Knoten
} }
3
Implementieren einer Entfernung Algorithmus . Dieser Algorithmus wird der Wert des ersten Knotens in die Liste. Dann wird es die "erste" Zeiger zum nächsten Knotenpunkt und löschen Sie den ersten Knoten . Damit wird der nächste Knoten der neue erste Position auf der Liste, zum Ausbau bereit. Das folgende Beispiel zeigt einen Algorithmus, um dies zu erreichen :
int remove (struct * Warteschlange q) {
int value = q- > first -> data ;
struct Knoten * temp = q- > first ;
q- > first = q- > first -> next ; //bewegt den ersten Zeiger auf das nächste Element
kostenlos (temp ); //löscht die alten ersten Knoten
Rückgabewert //Gibt den ersten Wert ; }
4
deklarieren und verwenden eine Warteschlange . Der Programmierer kann eine Warteschlange als Variable vom Typ " struct Warteschlange " deklarieren und verwenden die Funktionen zum Hinzufügen und Entfernen von Elementen . Das folgende Beispiel zeigt, wie zu erklären, und verwenden Sie einen Queue-Struktur :
int main () { struct
Warteschlange q;
Einsatz ( & q , 5); //Anwendungen ein Verweis auf "q" zu vermeiden flache Kopien
Einsatz ( & q , 6) ;
int x = remove ( & q) ; //x = 5