Übungsblatt 2 - Universität Trier
Übungsblatt 2 - Universität Trier
Übungsblatt 2 - Universität Trier
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Fachbereich IV - Abteilung Informatik<br />
Algorithmen und Datenstrukturen<br />
<strong>Universität</strong> <strong>Trier</strong><br />
Oliver Zlotowski Tel.: (0651)201-3280<br />
2. Übung:<br />
Softwarepraktikum C++, LEDA und STL<br />
Wintersemester 2004/2005 25. November 2004<br />
Abgabe per Email bis Donnerstag, 02.12.2004<br />
Aufgabe 2.1: (Punkte 5)<br />
Implementieren Sie eine generische Variante des Heapsort und des BubbleSort Algorithmus,<br />
so dass die implementierten Funktionen mit einem Iterator-Typ parametrisiert werden.<br />
Aufgabe 2.2: (Punkte 5)<br />
Der folgende Code veranschaulicht, wie Operatoren für einen benutzerdefinierten Datentyp<br />
definiert werden können<br />
struct A {<br />
int x;<br />
A() : x(0) {}<br />
A& operator=(const A& it) // A a, b; a = b;<br />
{ x = A.x;<br />
return *this;<br />
}<br />
A& operator++() // A a; ++a; bzw. a++;<br />
{ x++;<br />
return *this;<br />
}<br />
A operator++(int)<br />
{ A a; a.x = x; x++;<br />
return a;<br />
}<br />
int& operator*() { return x; } // Dereferenzierung: A a; *a = 2;<br />
const int& operator*() const { return x; }<br />
bool operator==(const iterator& it) const { return x == it.x; }<br />
bool operator!=(const iterator& it) const { return !operator==(it); }<br />
};<br />
Implementieren Sie einen bidirektionalen Iterator für die in der Vorlesung besprochene<br />
Klasse list. Sortieren Sie die Liste mit Hilfe der generischen BubbleSort Funktion aus<br />
Aufgabe 2.1.
Aufgabe 2.3: (Punkte 10)<br />
Ändern Sie die Implementierung der Liste aus der Vorlesung, so dass die Liste Objekte<br />
eines beliebigen Typs speichern kann. Schreiben Sie ein Programm, dass eine Liste<br />
von d2 point speichert und sortieren Sie diese Liste mit dem Verfahren aus Aufgabe<br />
2.1. Implementieren Sie dazu den Vergleichsoperator > für d2 point. Verwenden Sie die<br />
x − y−Ordnung, d.h., p.x > q.x dann ist p > q bzw. falls p.x == q.x dann werden die<br />
y-Koordinaten verglichen.<br />
Zu allen Implementierungen bitte ein Hauptprogramm, um die gewünschte Funktionalität<br />
zu zeigen.<br />
http://www.informatik.uni-trier.de/Algorithms/