• Keine Ergebnisse gefunden

Einige optionale ¨ Ubungsaufgaben (aus ¨ alteren Klausuren)

N/A
N/A
Protected

Academic year: 2022

Aktie "Einige optionale ¨ Ubungsaufgaben (aus ¨ alteren Klausuren)"

Copied!
4
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Algorithmen und Datenstrukturen Fachhochschule Wiesbaden

Sommersemester 2008 Prof. Dr. Steffen Reith

8. ¨ Ubungsblatt

Aufgabe 1 (Stacks)

In dieser Aufgabe soll ein Stack implementiert werden. Als Hilfestellung finden Sie unten eine grobe Skizze der ben¨otigten Klassenstruktur, Sie k¨onnen aber auch eine davon abweichende Implementierung vornehmen.

• Implementieren Sie den abstrakten Datentyp Stack in JAVA als Generic. Auf jeden Fall sind die Methoden push, popund isEmpty zu implementieren.

Ein (evtl. nicht vollst¨andiges) Beispiel f¨ur die Schnittstelle der Datentyps Stack:

public interface Stack<E>

{

// Ein Element auf den Stack legen public void push(E obj);

// Oberstes Element vom Stack entfernen und Wert zurueckgeben public E pop();

// Oberstes Element vom Stack zurueckliefern public E top();

// Ausgabe, ob der Stack leer ist public boolean isEmpty();

}

public class NodeStack<E> implements Stack<E> { // Ein Element im Stack wird durch eine

// Instanz von Node<N> repraesentiert private class Node<N> {

// Nutzdaten private N data;

// Naechstes Element private Node<N> next;

//Konstruktor

public Node (N o, Node<N> n) {...}

// Nutzdaten setzen

public void setData(N o) {...}

(2)

// Nutzdaten auslesen public N getData() {...}

// Nachfolger setzen

public void setNext(Node<N> n) {...}

// Naechsten Knoten zurueckgeben public Node<N> getNext() {...}

}

// Rest der Implementierung }

• Schreiben Sie ein Testprogramm (oder Methode), dass auf einem Stack vom Typ Stack<Integer> die Zahlen 1. . .128 nacheinander ablegt. Danach ent- fernen Sie die Elemente des Stacks mit pop und geben sie aus bis der Stack leer ist. Welche Reihenfolge der Zahlen ergibt sich?

Aufgabe 2 (Stacks)

• Die Umgekehrte Polnische Notation (kurz UPN), auch Postfixnotation ge- nannt, wird von einigen bekannten Taschenrechnern verwendet. Bei der UPN werden zuerst die Operanden eingegeben und danach der darauf anzuwenden- de Operator.

Bsp.: Der Ausdruck (3 + 4) lautet in UPN 3 4 + und aus (4∗7) + 3 wird dann 4 7 * 3 +.

Schreiben Sie ein JAVA-Programm, das UPN-Ausdr¨ucke einliest und auswertet in denen Zahlen und die Operatoren + und ∗vorkommen k¨onnen. Verwenden Sie dazu Ihren Stack. Beispiel:

restliche Eingabe Stack (top rechts) Operationen

2 7 * 3 + 2 mal push

* 3 + 2 7 2 mal pop, multiplizieren und push

14 3 + 2 mal push

+ 14 3 2 mal pop, addieren und push

17 Ergebnis: 17

Enth¨alt der Stack nur noch ein Element und ist die Eingabe vollst¨andig gele- sen, so ist das Ergebnis der Berechnung gefunden. Vereinfachend k¨onnen Sie davon ausgehen, dass Ihr Programm nur mit korrekten UPN-Ausdr¨ucken um- gehen k¨onnen muss.

Hinweis: Implementieren Sie die Eingabe so einfach wie m¨oglich (z.B. jede Zahl und jeder Operator wird einzeln eingelesen. Das Ende der Eingabe wird mit einem besonderen Zeichen angezeigt.).

Optional: Mit wenig Aufwand kann man Ihre Implementierung um die Ope- randen − und /erweitern. Implementieren Sie diese Erweiterung.

2

(3)

Aufgabe 3 (Listen) Zur L¨osung dieser Aufgabe m¨ussen Sie folgende Punkte ber¨ucksichtigen:

• Implementieren Sie eine doppelt-verketteten Liste von ganzen Zahlen inC. Zu implementieren sind die Methodeninsertund isEmpty. Die Methodeinsert f¨ugt einen neuen Wert so in die Liste ein, dass sie sortiert ist. D.h. enth¨alt die Liste schon die Zahlen 4,7,11, so ergibt ein insert(9)die Liste 4,7,9,11.

• Implementieren Sie ein Testprogramm f¨ur Ihre Liste, das 16 zuf¨allige Werte in die Liste einf¨ugt und sie dann ausgibt.

Die Abnahme erfolgt erst in der KW 24 vom 9.6.2008 - 13.6.2008

3

(4)

Einige optionale ¨ Ubungsaufgaben (aus ¨ alteren Klausuren)

• 1. i = 1;

2. while (i < n) { 3. i++;

4. j = 1;

5. do {

6. j = j + 2;

7. while (j <= n) }

Geben Sie den Zeitbedarf der Zeilen 4 bis 7 und f¨ur das gesammte Programm in Abh¨angigkeit von n an. Benutzen Sie die O-Notation.

• Beschreiben Sie Insertion Sort in Pseudocode und sortieren Sie die Zahlen 9 3 2 7 damit. Notieren Sie die sich ergebende Zahlenfolge nach jedem inneren Schleifen- durchlauf.

• Die Zahlen 2, 5, 9, 11 sind in einer (zeigerverketteten) linearen Liste gespeichert.

Erl¨autern Sie mit

”Zeigerbildchen“ und kurzen Kommentaren, wie die Zahl 7 in diese Liste eingef¨ugt wird.

• Was versteht man unter

”terminieren“ und wann ist ein Algorithmus

”korrekt“?

• Welche Laufzeit hat HeapSort im worst case?

• Beschreiben Sie Selection Sort umgangssprachlich.

• Richtig oder falsch?

”Deterministische Algorithmen sind immer korrekt“ Begr¨unden Sie Ihre Antwort!

4

Referenzen

ÄHNLICHE DOKUMENTE

[r]

[r]

[r]

[r]

[r]

[r]

Beförderungsvertrag in diesem Sinne sei aber nur das zwischen dem Absender des Guts und dem Frachtführer bestehende Rechtsverhältnis, nicht jedoch der Vertrag zwischen

&lt;S&gt;&lt;/S&gt; mit Bindestrich daran ohne Spatium, S.. Reihen etc.) spielen insofern keine Rolle, da sie über die Stücktitelaufnahme sowieso auch indirekt mit dem