Stapel vs Warteschlange?

8

hallo ich bin noch ein Student und ich bin ein bisschen verwirrt über das Stapeln und Anstehen? erste Frage ist,

  1. Was ist der Hauptunterschied zwischen den beiden?

  2. Übrigens gibt es zirkuläre Warteschlangen neben normalen Warteschlangen. Wie wäre es damit? wie arbeiten Sie ? Gibt es verschiedene Möglichkeiten zum Anstehen?

  3. Ich benutze PHP, gibt es einen einfachen (sehr einfachen oder leicht zu lesenden) Beispielcode, auf dem ich lernen kann (Links sind auch in Ordnung.)?

  4. gibt es Pop, Push und etc (Stacking und Queuing), gibt es so etwas in PHP?

Vielen Dank, dass Sie reinschauen.

    
Adam Ramadhan 01.10.2010, 07:28
quelle

5 Antworten

20

1: Bei Stacks funktionieren die Einfüge- / Entfernungsoperationen am selben Ende der Datenstruktur (oben)

Bei Warteschlangen erfolgt das Einlegen an einem Ende (hinten) und das Entfernen am anderen Ende (vorne).

(Beide Bilder stammen aus den jeweiligen Wikipedia-Einträgen)

2: siehe Ссылка

3: und 4: siehe SplStack und SplQueue

    
VolkerK 01.10.2010, 07:34
quelle
7

In PHP würden Sie ein Array () verwenden, um Ihre Daten für beide Stapel und Warteschlangen zu speichern und sie mit den Funktionen array_ * zu bearbeiten. Sehen Sie sich Array-Funktionen auf php.net an

Sie haben

  • array_push - Setzen Sie ein neues Element am Ende des Arrays
  • array_pop - entfernt ein Element vom Ende des Arrays
  • array_shift - entfernt ein Element vom Anfang des Arrays
  • array_unshift - Setzen Sie ein neues Element auf den Anfang des Arrays.

  • Für einen Stapel würden Sie array_push und array_pop

  • verwenden
  • Für eine Warteschlange würden Sie array_push und array_shift
  • verwenden

Ein Ringpuffer, den ich als eigenständiges Objekt implementieren würde.

    
thomasmalt 01.10.2010 07:42
quelle
3

Es scheint, dass Sie auf den Unterschied zwischen First-In-First-Out- und Last-In-First-Out-Warteschlangen gelenkt werden. Ein Stack ist der erste und eine ringförmige Warteschlange ist eine effiziente Implementierung des letzteren.

  1. Ein Stack ist eine LIFO-Warteschlange (last in, first out).

  2. Sie können eine ringförmige Warteschlange erstellen. Diese waren am häufigsten in Kommunikationsschnittstellenpuffern vorhanden, da sie nur über begrenzten Speicher verfügten mit Daten asynchron und die Daten werden von der CPU zu verschiedenen Zeiten gelesen.

  3. Sie können Warteschlangen in jeder Sprache erstellen, wenn Sie Ihre Sprache gut beherrschen.

  4. Die PHP-Website bietet eine Menge Dokumentation.

PP. 01.10.2010 07:33
quelle
2

Ein Stapel fügt Elemente vom selben Ende hinzu und entfernt sie.

Eine Warteschlange fügt der Rückseite Elemente hinzu und entfernt Elemente von vorne (wie eine Zeile in einer Bank.)

Es gibt einen Artikel über sie beide , der im Detail mit Codebeispielen erklärt.

Ein Ringspeicher hat nur wenig Platz und fügt Elemente kreisförmig hinzu und überschreibt die Objekte am Ende.

p>     

JoshD 01.10.2010 07:34
quelle
1

Ссылка

Ссылка

Sie können sich den Beispielcode dort ansehen

    
Jase Whatson 01.10.2010 07:36
quelle

Tags und Links