Gegeben ist das folgende Definitionsmodul für einen Binärbaum:
DEFINITION MODULE balTree; (*auf die Verwendung von hidden types wird hier verzichtet*) TYPE Baum = POINTER TO Knoten; Knoten = RECORD inhalt: CARDINAL; anzahl: CARDINAL; (* Anzahl im Baum, dessen Wurzel der * gegebene Knoten ist *) links, rechts: Baum; END; PROCEDURE baueBaum(anz: CARDINAL):Baum; (* anz: Anzahl der Knoten; Return-Wert ist * Zeiger auf die Wurzel des konstruierten Baumes * liest von der Standardeingabe - erste Zahl ist die * Anzahl der Elemente - und schreibt die gelesenen Zahl in * die Komponente ``inhalt'' *) PROCEDURE druckeBaum(wurzel: Baum; einr: CARDINAL); (* gibt Baum (Komponente ``inhalt'') in horizontaler Form aus; * einr ist die Einrueckstufe *) PROCEDURE druckeAlles(wurzel: Baum; einr: CARDINAL); (* gibt Baum (Komponenten ``inhalt'' und ``anzahl'') * in der Form (``inahlt'',``anzahl'') * in horizontaler Form aus; * einr ist die Einrueckstufe *) PROCEDURE anzahlBlaetter(wurzel: Baum):CARDINAL; (* liefert rekursiv die Anzahl der Blaetter im Baum ``wurzel''*) PROCEDURE Summe(wurzel: Baum): CARDINAL; (* liefert rekursiv die Summe der Knoteninhalte *) PROCEDURE bestimmeKnotenzahl( VAR wurzel: Baum); (* traegt in jedem Knoten in die Komponente ``anzahl'' * die Anzahl der Knoten in dem Teilbaum ein, dessen * Wurzel der gegebene Knoten ist - rekursiv *) END balTree.Im zugehörigen IMPLEMENTATION MODULE sind die Prozeduren ``baueBaum'' und ``druckeBaum'' bereits implementiert und können ebenso wie das MAIN MODULE verwendet werden; d.h., es sind die Prozeduren ``druckeAlles'', ``anzahlBlaetter'', ``Summe'' und ``bestimmeKnotenzahl'' zu implementieren.
Die Module stehen im Katalog /www/thales/ftp/pub/vorlesungen/ss97/prog/blatt9 zur Verfügung und können, müssen aber nicht verwendet werden.
Viel Erfolg!