Funktionsweise von Stack- und Snakedatentypen? Code?

Status
Nicht offen für weitere Antworten.

pw04

Mitglied
Hallo!

Ich möchte einen Stack- und einen Snake- Speicher mit Hilfe von Arrays erstellen.
Allerdings bin ich mir bei der Funktionsweise dieser Speicher nicht sicher.
Kennt sich jemand damit aus oder hat einen Programmcode mit Arrays?
FIFO und LIFO sind mir bekannt. Nur wie das in der Praxis verwendet werden soll, dessen bin ich mir unsicher.
Ich würde mich freuen, wenn mir jemand von Euch einen Rat geben kann.
 

mic_checker

Top Contributor
Warum gerade mit nem Array?
Du könntest das ganze mit Array natürlich so sehen:

Beim Pushen schreibst du die Werte in das Array rein, ist natürlich die Frage ob du das zuletzt hinzugefügte Element an [0] haben willst oder am Ende des Arrays.

Beim Poppen müsstest du dann je nachdem das Erste zurückgeben und die andern nachschieben oder falls das zuletzt eingefügte hinten im Array war dieses Element zurückgeben und den Wert überschreiben.

Außerdem könntest du ne Zählvariable einführen damit du die Größe des "Stacks" zurückgeben kannst.

Finde das ganze mit Array allerdings unpraktisch und nicht im Sinne des Erfinders.
 

pw04

Mitglied
Ja ich finde es auch blöd mit Arrays, brauche es aber für die Schule.

Aber irgendwie verstehe ich das nicht so ganz. Wie wird das ganze gespeichert?

Funktioniert der Stack so, dass ich erst den Array von unten nach oben auffülle und wenn er voll ist immer die letzte Variable durch eine neue ersetze oder wie? Aber dann würden sich ja die Elemente, nach dem zuletzt- hinzugefügtem Wert nie ändern...

Funktioniert der Snake- Speicher so, dass der Array aufgefüllt wird und wenn er voll ist, der zuerst- eingefügte Wert gelöscht wird, die anderen Elemente nachrücken und dann an die ehemalige Stelle, des zuletzt eingefügten Wertes, der neue Wert kommt? [etwas kompliziert erklärt ;-) ]

Was ist push und pop?
Und was ist der Sinn der Speicher?
 

semi

Top Contributor
Hi,

hier ein Beispiel mit dem Stack, vielleicht bringt Dich das auf paar Ideen.
Das andere Ding kannst Du entsprechend selbst machen. Was zum ... ist ein Snake-Speicher? :roll:
Code:
public class Stack
{
  private Object stack[] = new Object[16];
  private int size = 0;

  /**
  * Diese Methode stellt sicher, dass der Stack ausreichend groß ist.
  *
  * @param c Geforderte Größe
  */
  private void ensureCapacity(int capacity)
  {
    if(capacity>=stack.length)
    {
      Object newStack[] = new Object[stack.length*2];
      System.arraycopy(stack, 0, newStack, 0, size);
      stack = newStack;
    }
  }

  public boolean isEmpty()
  {
    return size==0;
  }

  public int getSize()
  {
    return size;
  }

  public void push(Object o)
  {
    ensureCapacity(size+1);
    stack[size++] = o;
  }

  puplic Object pop() throws EmptyStackException
  {
    if(size==0)
      throw new EmptyStackException("Nix drin");
    Object o = stack[--size];
    stack[size] = null;
    return o;
  }
}

class EmptyStackException extends Exception
{
  public EmptyStackException(String msg)
  {
    super(msg);
  }
}
 

pw04

Mitglied
Danke für deine Bemühungen, aber das hilft mir leider nich viel.
Ich muss das mit Arrays machen.
 

pw04

Mitglied
Stimmt ihr habt Recht. Mich hat irgendwie dieses "Object" gestört.

Code:
puplic Object pop() throws EmptyStackException 
  { 
    if(size==0) 
      throw new EmptyStackException("Nix drin"); 
    Object o = stack[--size]; 
    stack[size] = null; 
    return o;
Nur was bedeutet das Wort "throws" ?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Genaue Funktionsweise von MessageDigest Allgemeine Java-Themen 2
M MVC - Funktionsweise des Controllers Allgemeine Java-Themen 11
V Funktionsweise eines Spiele ZeitZählers Allgemeine Java-Themen 3
G toString(), Funktionsweise? Allgemeine Java-Themen 7
reibi Fragliche Funktionsweise des GC Allgemeine Java-Themen 10
D Funktionsweise Allgemeine Java-Themen 11
berserkerdq2 IJVM, ich tue auf meinen Stack 100 und 120 rein, danach subtrahiere ich, macht die Maschine 100-120 oder 120-100? Allgemeine Java-Themen 8
berserkerdq2 Kann man in IJVM maximal 3 Werte im Stack haben? Allgemeine Java-Themen 3
M Stack umdrehen Allgemeine Java-Themen 2
H Stack mit bestimmter Aufgabe Allgemeine Java-Themen 62
L Stack overflow bei einer endrekursiven Funktion (Anwendung: Spezialform des Package Merge) Allgemeine Java-Themen 4
S Collections Stack-Kapazität begrenzen Allgemeine Java-Themen 6
C Method Area, Stack, Heap Allgemeine Java-Themen 7
F Mehrere Threads - ein Stack Allgemeine Java-Themen 6
M Baum nach Stack plus Objektkonvertierung Allgemeine Java-Themen 5
V Performancefrage int-Vector/Stack Allgemeine Java-Themen 10
X Wie 'teuer' ist die Verwendung des Stack Trace ? Allgemeine Java-Themen 8
H Alternative zu Stack Allgemeine Java-Themen 3
G Java Logger ohne Stack Trace ausgaben. Allgemeine Java-Themen 2
V Unable to pop operand off an empty stack Allgemeine Java-Themen 2
M Stack vergrößern? Allgemeine Java-Themen 7
R Entsprechung von Stack() im Collections Framework...? Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben