9 Stimmen

Stack vs queuing? Stapel vs Warteschlange?

Hallo, ich bin immer noch Student und etwas verwirrt über das Stapeln und Warten? Die erste Frage lautet,

  1. Was ist der Hauptunterschied zwischen den beiden?

  2. Übrigens gibt es neben dem normalen Warten auch zirkuläres Warten, wie funktioniert das? Gibt es verschiedene Arten des Wartens?

  3. Ich verwende PHP, gibt es einen einfachen (sehr einfachen oder leicht verständlichen) Beispielcode, den ich lernen kann (Links sind auch in Ordnung)?

  4. Es gibt pop, push und etc. (Stapelung und Warteschlangen), gibt es so etwas auch in PHP?

Vielen Dank fürs Vorbeischauen.

4 Stimmen

Ich schätze, dass du ein Student bist, aber du solltest wirklich in der Lage sein, problemlos zu suchen und Antworten auf diese Fragen zu finden.

1 Stimmen

@Mittag - vielleicht hat er das, aber er hat bereits über 30 Fragen auf StackOverflow gestellt, also muss er dem Qualitätsniveau der Antworten vertrauen.

0 Stimmen

@kev danke :) Stack gibt mir einfach ausgezeichnete Antworten in weniger Zeit. Es wird süchtig :(. Egal, Qualität ist wirklich wichtig, nicht nur das, es ist eine Gemeinschaft + Wiki.

21voto

VolkerK Punkte 93746

1: Während bei Stapeln die Einfüge-/Entfernungsoperationen beide am gleichen Ende der Datenstruktur (oben) arbeiten

mit Warteschlangen erfolgt die Einfügung an einem Ende (hinten) und die Entfernung am anderen Ende (vorne).

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

2: siehe http://en.wikipedia.org/wiki/Circular_buffer

3: und 4: siehe SplStack und SplQueue

7voto

thomasmalt Punkte 1698

In php würdest du ein array() verwenden, um deine Daten sowohl für Stacks als auch für Queues zu halten und die array_* Funktionen verwenden, um sie zu manipulieren. Schau dir Array-Funktionen auf php.net an

Du hast

  • array_push - fügt ein neues Element am Ende des Arrays hinzu

  • array_pop - Entfernt ein Element am Ende des Arrays

  • array_shift - Entfernt ein Element am Anfang des Arrays

  • array_unshift - fügt ein neues Element am Anfang des Arrays hinzu.

  • Für einen Stack würdest du array_push und array_pop verwenden

  • Für eine Warteschlange würdest du array_push und array_shift verwenden

Einen Ringpuffer würde ich als eigenständiges Objekt implementieren.

3voto

PP. Punkte 10514

Es scheint, als würdest du auf den Unterschied zwischen First-In-First-Out- und Last-In-First-Out-Warteschlangen gelenkt. Ein Stapel ist ersteres und eine kreisförmige Warteschlange ist eine effiziente Implementierung des letzteren.

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

  2. Man kann eine kreisförmige Warteschlange haben – diese waren am häufigsten in Kommunikationsschnittstellen-Puffern anzutreffen, da sie über begrenzten Speicher verfügten und Daten asynchron eingegangen sind und zu verschiedenen Zeiten vom CPU gelesen wurden.

  3. Man kann in jeder Sprache Warteschlangen erstellen, wenn man die Sprache gut kennt.

  4. Die php Webseite bietet eine Menge Dokumentationen.

2voto

JoshD Punkte 12072

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

Eine Warteschlange fügt Elemente am Ende hinzu und entfernt Elemente am Anfang (wie bei einer Schlange in einer Bank).

Es gibt einen Artikel über beide, der detailliert mit Codebeispielen erklärt.

Ein Zirkulärer Puffer hat begrenzten Platz und fügt Elemente in zirkulärer Weise hinzu, indem er die am Ende überschreibt.

1voto

Jase Whatson Punkte 4143

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X