0 Daumen
524 Aufrufe

Frage:

Guten Tag,

Ich fange vor kurzem an , Java zu lernen. und ich brauche Hilfe bei dieser Frage. Danke.


Code:#

Implementieren Sie einen objekt-orientierten Stack mit den üblichen Operationen push, pop, top, size
und isEmpty.
a) Implementieren Sie den Stack in der Datei Stack.java! Wenden Sie dabei das Prinzp der testgetriebene Entwicklung auf Basis der Testfälle in StackTest.java an.
b) Ergänzen Sie Ihre Implementierung um Exceptions, mit denen Programmierer über die fehlerhafte
Nutzung des Stacks informiert werden.
c) Implementieren Sie in der Datei StackGeneric.java einen alternativen Stack, der Generics nutzt
und so sicherstellt, dass nur Elemente eines bestimmten Typs (z.B. Integer, String) gespeichert
werden können! Verwenden Sie auch hier Exceptions und testen Sie Ihre Implementierung mittels
der Testklasse StackGenericTest.java.

Avatar von

Hast du irgendwelche Fragen zu der Aufgabe oder möchtest du einfach nur, dass wir sie für dich lösen.

Ich möchte wissen, wie ich mit der Lösung der Frage beginnen kann.

Man schreibt in die Datei Stack.java ein leere Klasse namens Stack. Dann überlegt man sich, welche Datenstruktur dafür geeignet ist, die Elemente des Stacks aufzunehmen und fügt ein entsprechendes Attribut zur Klasse hinzu. Dann implementiert man die Methoden push, pop, top, size und isEmpty.

Vielen Dank . Ich werde versuchen.

1 Antwort

0 Daumen
 
Beste Antwort

class Stack {
  public class EmptyStackException extends RuntimeException { }
 
  private class Element {
      private Element(Object o, Element p) {
          object = o;
          previous = p;
      }
      private Object object;
      private Element previous;
  }
 
  public Stack() {
      element = null;
      size = 0;
  }

  public void push(Object o) {
      element = new Element(o, element);
      size += 1;
  }
 
  public void pop() {
      if (size == 0) {
          throw new EmptyStackException();
      } else {
          element = element.previous;
          size -= 1;
      }
  }

  public Object top() {
      if (size == 0) {
          throw new EmptyStackException();
      } else {
          return element.object;
      }       
  }
 
  public int size() {
      return size;
  }
 
  public boolean isEmpty() {
      return size == 0;
  }
 
  private Element element;
  private int size;
 
  public static void main(String[] args) {
      Stack s = new Stack();
      for (int i = 0; i < 10; ++i)  {
          s.push(i);
      }
      while (true) {
          System.out.println(s.top());
          s.pop();
      }
  }
}

Avatar von 5,7 k

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community