/***************************************************************/ /* Prof. Dr. Carsten Vogt */ /* FH Koeln, Fak. 07 / Nachrichtentechnik */ /* http://www.nt.fh-koeln.de/vogt */ /* */ /* Loesung der Uebungsaufgabe Kapitel 8, Nr. 3 */ /* aus "C fuer Java-Programmierer", Hanser-Verlag. */ /* */ /* Diese Datei enthaelt nur die geforderten Funktionen, jedoch */ /* kein Hauptpogramm und ist daher nicht allein lauffaehig. */ /* Die Funktionen koennen in die Beispielprogramme zu einfach */ /* verketteten Listen, doppelt verketteten Listen und Baeumen */ /* eingebettet werden. */ /***************************************************************/ #include typedef struct listenknoten { int wert; struct listenknoten *next; } listenknoten; typedef struct listenknoten_dop { int wert; struct listenknoten_dop *prev; struct listenknoten_dop *next; } listenknoten_dop; typedef struct binbaumknoten { char *wert; struct binbaumknoten *li_sohn; struct binbaumknoten *re_sohn; } binbaumknoten; unsigned int anzahl(listenknoten *kopf) { listenknoten *laufzeiger; unsigned int anzahl = 0; while (laufzeiger!=NULL) { anzahl++; laufzeiger = laufzeiger->next; } return anzahl; } unsigned int anzahl_dop(listenknoten_dop *kopf) { listenknoten_dop *laufzeiger; unsigned int anzahl = 0; if (kopf==NULL) return 0; do { anzahl++; laufzeiger = laufzeiger->next; } while (laufzeiger!=kopf); return anzahl; } unsigned int anzahl_baum(binbaumknoten *knoten) { if (knoten==NULL) return 0; return anzahl_baum(knoten->li_sohn)+anzahl_baum(knoten->re_sohn)+1; }