Queue vs. Stack

Diskutiere Queue vs. Stack im Java Basics - Anfänger-Themen Bereich.
D

DanielaLima

Hallo miteinander :)

ich hab hier eine Frage aus einer Programmieren-Probeklausur.
Kann mir bitte jemand die Frage erklären. Was müsste eurer Meinung hier gemacht werden. Was ist mit Queue nachbilden gemeint?

und... wie würdet ihr "erläutern"(zweiter teil). also mit code, zeichnung, einen text schreiben? oder was denkt ihr wird hie erwartet.


"Lässt sich das Verhalten einer Queue (Warteschlange) durch Stacks nachbilden? Falls ja, erläutern Sie, wie Sie einen FIFO-Container für 10 Elemente nachbilden würden. "



danke schonmal :)))

LG
 
H

httpdigest

Naja, ein Stack ist eine LIFO-Datenstruktur (LIFO = Last In, First Out). Das bedeutet, dass ein paar Paare der üblichen push() und pop() Operationen immer auf demselben Element arbeitet. LIFO heißt dann auch: Das letzte Element, was du in den Stack eingefügt hast (push()), wird das erste Element sein, was du auch wieder rausholen kannst (pop()).
Eine Queue ist FIFO (First In, First Out), das heißt, das erste Element, was du in eine Queue einfügst, ist auch das erste, was du dort wieder herausholen kannst.
Du sollst jetzt eine Lösung angeben (vermutlich mit Code), die eine FIFO-Struktur mit Hilfe einer LIFO-Struktur realisiert. Hier kannst du wahrscheinlich einfach nur von dem Vorhandensein der LIFO-Operationen "push()" und "pop()" ausgehen.
 
mihe7

mihe7

"Lässt sich das Verhalten einer Queue (Warteschlange) durch Stacks nachbilden? Falls ja, erläutern Sie, wie Sie einen FIFO-Container für 10 Elemente nachbilden würden. "
Um das mal bildlich zu beschreiben: stell Dir vor, Du hast einen Stapel Papier. Der Stapel soll wie ein Stack funktionieren, d. h. Du kannst ein neues Blatt nur oben auf den Stapel legen und auch immer nur das oberste Blatt vom Stapel entfernen.

Frage: ist es möglich,
a) an das unterste Blatt Papier zu kommen
b) und zwar so, dass die restlichen Blätter in der ursprünglichen Reihenfolge wieder auf einem Stapel liegen?

Wenn ja, wie?
 
D

DanielaLima

ich würde jetzt behaupten, dass es geht, aber sehr umständlich ist.,
spricht. ich müsste erst alle blätter in einen anderen stapel "verschieben"
und dann wieder zurückdamit. heißt, ich bräuchte insgesamt also zwei stapel statt nur einem für diese aufgabe, richtig?
wie ich das als code umsetze, weiss ich allerdings noch nicht , aber das kommt auch noch
 
X

Xyz1

Nehmen wir mal 3 Elem an... Aufgepasst - jetzt kommt eine Hammer Grafik:
Code:
a
b
c      <- unterstes Element
- - -

b
c a
- - -

  b
c a
- - -

  c
  b
  a
- - -

  b
  a c
- - -

b a c
- - -

a
b   c
- - -
 
D

DanielaLima

die Grafik ist topp :)
das hilft sehr weiter

ich versuch mich mal ans programmieren, die frage hab ich glaube ich jetzt verstanden
 
mihe7

mihe7

ich würde jetzt behaupten, dass es geht, aber sehr umständlich ist.,
Ja, das war auch nur zum warm werden die Variante, die den Ausgangsstapel unverändert lässt :)

Du kannst Dir jetzt überlegen, dass die beiden Stapel zwei unterschiedliche Reihenfolgen haben: der erste Stapel ist in Stapelreihenfolge, der zweite in Queue-Reihenfolge.

Geht es um die Ausgabe brauchst Du die Queue-Reihenfolge. Für das Einfügen bietet sich dagegen die Stapel-Reihenfolge an.

Und (nicht nur) bei solchen Sachen: immer visualisieren.

Fügen wir mal a, b, c in die "Queue" ein, dann sieht der Stapel so aus wie der erste Stapel von @Tobias-nrw.

Code:
c
b
a
Du kannst hier also wunderbar in die Queue einfügen, weil einfach nur "hinten" angefügt wird.

Willst Du jetzt ein Element in Queue-Reihenfolge haben, legst Du die Elemente auf den Hilfsstapel:
Code:
.  a
.  b
.  c
Das oberste Element ist dann das erste Element in der Queue. Das nächste Element wäre dann das zweite Element der Queue usw. So lange Du also ein Element in Queue-Reihenfolge anforderst, kannst Du über den Hilfsstapel gehen.

Sagen wir mal, wir nehmen nun das erste Elemente aus der Queue:
Code:
.  .
.  b
.  c
Wenn Du jetzt wieder ein Element zur Queue hinzufügen sollst: Elemente wieder zurück auf den anderen Stapel.
Code:
.  .
c .
b .
Dann einfügen, sagen wir mal ein "d":
Code:
d  .
c .
b .
 
Thema: 

Queue vs. Stack

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben