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