Universität Mannheim
Lehrstuhl für Praktische Informatik IV
Prof. Dr. W. Effelsberg
R. Lienhart 416
S. Pfeiffer 417
Bitte unbedingt beachten:
Die Programme müssen in ANSI-C geschrieben werden.
Sie müssen im Pool mit dem GNU C-Compiler gcc fehlerfrei übersetzbar
und lauffähig sein.
Wenn mehrere Dateien abgegeben werden sollen, müssen sie vorher
mit dem Befehl tar zu einer Datei zusammengebunden werden.
Übungsblatt 1
Abgabe: 2.11.95
Aufgabe 1 [30 Punkte]
Implementieren Sie einen Stapel (Stack) mit den unten beschriebenen Funktionen.
Achten Sie darauf, daß der Stapel sich dynamisch vergrößert,
wenn der Platz nicht ausreicht.
/* <...> ist durch den richtigen Typ zu ersetzen! */
typedef <...> T;
void push(T* stapel, T elem) {
/* stellt elem auf stapel; Der Stapel soll sich dynamisch
vergroessern, wenn der Platz nicht ausreicht. */
}
T pop(T* stapel) {
/* liefert das oberste T von stapel und entfernt es von ihm,
wenn der stapel nicht leer ist; sonst Fehler */
}
T top(T* stapel) {
/* liefert das oberste T von stapel */
}
int empty(T* stapel) {
/* liefert true, wenn stapel leer; sonst false */
}
Aufgabe 2 [30 Punkte]
In einem Sackbahnhof mit drei Gleisen befinden sich auf den Gleisen
S2 und S3 zwei Züge mit Waggons für den
Zielbahnhof A bzw. B. Gleis S1 sei leer (vgl. Abbildung).
Betrachten Sie S1, S2 und S3 als Stapel.
Erstellen Sie ein C-Programm, das unter Verwendung des in Aufgabe 1
entwickelten Stapels zwei beliebige aus Waggons für A und B bestehende
Züge so umordnet, daß anschließend in S1 alle
Waggons für A und in S2 alle Waggons für B stehen.
Last modified: Fri Nov 3 10:40:31 MET 1995