• Keine Ergebnisse gefunden

Übung 2: Stack, Queue

N/A
N/A
Protected

Academic year: 2022

Aktie "Übung 2: Stack, Queue"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Übung 2: Stack, Queue

Abgabetermin: 20.03.2012

Name: __________________________________________ Matrikelnummer: _________________

Gruppe: ☐ G1 Di 10:15 ☐ G2 Di 12:45

Aufgabe Punkte gelöst abzugeben

schriftlich abzugeben

elektronisch Korr. Punkte

Aufgabe 1 12 Java-Programm

Testfälle und Ergebnisse

Java-Programm

Aufgabe 2 12

Aufgabe 1: Stack für Zeichen (12 Punkte)

Implementieren Sie einen Kellerspeicher für Zeichen, einmal mit einem Array in der KlasseArrayStackund einmal als verkettete Liste in der KlasseLinkedListStack. Beide Klassen sollen die durch die abstrakte Klas- seStackgegebene Schnittstelle implementieren: push kellert ein Zeichen ein,popkellert ein Zeichen aus, sizeliefert die Anzahl der Zeichen unditeratorliefert einen Iterator (mit SchnittstelleIterator) mit dem der Kellerspeicher von oben nach unten durchlaufen werden kann.

package  at.jku.ssw;

public  abstract  class  Stack  {

   public  abstract  void  push(char  value);

   public  abstract  char  pop()        throws  NoSuchElementException;

   public  abstract  int  size();

   public  abstract  Iterator  iterator();

}

public  abstract  class  Iterator  {    public  abstract  boolean  hasNext();

   public  abstract  char  next();

}

Implementieren Sie die Klassen ArrayStack und LinkedListStack im Paket at.jku.students.

package  at.jku.students;

public  class  ArrayStack  extends  Stack  {    char[]  stack  =  new  char[1];  int  count  =  0;

   ...

}

public  class  LinkedListStack  extends  Stack  {      //  aus  Vorgabe

   List  list  =  at.jku.ssw.LinkedList();  

   ...

}

Stack  s  =  new  ArrayStack();

s.push('2');  s.push('K');

s.pop();

s.push('I');  s.push('P');

Iterator  it  =  s.iterator();

while  (it.hasNext())  {

   Out.print("  "  +  it.next());

}  //  Ausgabe:  P  I  2

Implementierungshinweise:

■In der KlasseArrayStackinitialisieren Sie das Array mit Länge 1 und verdoppeln Sie die Länge wenn das Array voll ist.

■In der Klasse LinkedListStack verwenden Sie die Klasse at.jku.ssw.LinkedList mit der Schnittstelle at.jku.ssw.Listaus der Vorgabedatei. Implementieren Sie den Kellerspeicher indem Sie die Stack-Operati- onen auf die passende Listen-Operationen abbilden.

package  at.jku.ssw;

public  abstract  class  List  {

   public  abstract  void  add(char  value);

   public  abstract  void  add(

       int  index,  char  value);

   public  abstract  char  get(int  index);

   public  abstract  char  remove(int  index);

   public  abstract  int  indexOf(char  value);

   public  abstract  int  size();

   public  abstract  Iterator  iterator();

}

Übung Praktische Informatik 2 SS 2012

(2)

Zeigen Sie die Funktion der beiden Klassen mit folgender Zeichenfolge:

N  S  H  *  A  *  Q  D  R  *  *  *  E  U  *  *  *  O  T  *  I  *  *  *

Ein Buchstabe bedeutetpush und ein Sternchenpop. Geben Sie die Sequenz der Zeichen an, die die Pop- Operation zurückgibt.

Abzugeben ist: Java-Programm, Testfälle, gesuchte Zeichensequenz

Aufgabe 2: Queue für Zeichen (12 Punkte)

Implementieren Sie eine FIFO-Warteschlange (First-in-first-out) für Zeichen, einmal mit einem Array in der KlasseArrayQueue(zyklischer Puffer, Array mit fixer Größe) und einmal als verkettete Liste in der Klasse LinkedListQueue. Beide Klassen sollen die durch die abstrakte KlasseQueuegegebene Schnittstelle imple- mentieren:putfügt ein Zeichen ein,getentnimmt ein Zeichen,sizeliefert die Anzahl der Zeichen unditera- tor liefert einen Iterator mit dem man die Warteschlange in FIFO-Reihenfolge durchlaufen kann.

package  at.jku.ssw;

public  abstract  class  Queue  {

   public  abstract  void  put(char  value)  throws  Exception;

   public  abstract  char  get()  throws  Exception;

   public  abstract  int  size();

   public  abstract  Iterator  iterator();

}

//  Iterator  &  List //  siehe  Aufgabe  1

Implementieren Sie die KlassenArrayQueueundLinkedListQueueim Paketat.jku.students. Für dieLinked- ListQueue verwenden Sie wie in Aufgabe 1 die Klasse LinkedList.

package  at.jku.students;

public  class  ArrayQueue  extends  Queue  {    static  final  int  MAX_SIZE  =  100;

   char[]  queue  =  new  char[MAX_SIZE];

   int  count  =  0;

   ...

}

public  class  LinkedListQueue  extends  Queue  {      //  aus  Vorgabe

   List  list  =  at.jku.ssw.LinkedList();  

   ...

}

Queue  q  =  new  ArrayQueue();

q.put('P');  q.put('I');  q.put('2');

Out.print(l.size()  +  ":  ");

Iterator  it  =  l.iterator();

while  (it.hasNext())  {

   Out.print("  "  +  it.next());

}

//  Ausgabe  3:  P  I  2

Zeigen Sie die Funktion der beiden Klassen mit folgender Zeichenfolge:

E  A  S  *  Y  *  Q  U  E  *  *  *  S  T  *  *  *  I  O  *  N  *  *  *

Ein Buchstabe bedeutetputund ein Sternchenget. Geben Sie die Sequenz der Zeichen an, die die Get-Ope- ration zurückgibt.

Abzugeben ist: Java-Programm, Testfälle, gesuchte Zeichensequenz

Übung Praktische Informatik 2 SS 2012

Referenzen

ÄHNLICHE DOKUMENTE

Besprechung Blatt 13 Graphalgorithmen Bin¨ arb¨ aume in einem Array Vorbereitung Fragen.. Fragen zu

By default, the Hawk supplies term power on all ports. At least one device on any nSSI or SCSI interconnect must supply term power to the terminators. There is no harm in

 Problem: im voraus nicht bekannt, wie groß das Array sein soll.  Also: zunächst ganz kleines Array erzeugen,

Doppelt verkettete Listen bestehen aus Listenzellen mit zwei Zeigern. • Ein Zeiger prev auf die

ourStack.push("Hallo");.. Dann testen wir, ob eine Exception geworfen wird, wenn wir versuchen, eine Element aus einem leeren Stack zu entnehmen...

NUMBER Bootleg

Seiko Epson does not assume any liability of any kind arising out of any inaccuracies contained in this material or due to its application or use in any product or circuit and,

• If a customer has a problem that is not ready for a development tool or can not be developed by using the conventional design flow, EPSON supports the development of EPSON's