#include #include // für malloc() // Die Datenstruktur aus der Aufgabe struct Buch { char *titel; char *autor; char *kurzinfo; int nummer; struct Buch *next; }; // Eine Hilfsfunktion, die eine neue Buchkarte holt und auch gleich deren Nummer setzt struct Buch * neues_buch(int nummer) { struct Buch * neu; // Speicher holen für neues Buch neu = (struct Buch *) malloc( sizeof(struct Buch) ); // Nummer in der neuen Buchkarte setzen neu -> nummer = nummer; neu -> next = NULL; // Zunächst kein Nachfolger vorhanden return neu; // und Adresse der neuen Buchkarte zurückgeben. } int main() { struct Buch *erstes; // Datenfeld-Zeiger auf das ERSTE Buch (Beginn der Liste)! struct Buch *aktuelles; // Datenfeld-Zeiger auf das aktuell bearbeitete/nächste Buch. int i; // Zähler für for()-Schleife erstes = neues_buch(0); // Speicher für erste Karte holen aktuelles = erstes; // Zeiger "aktuelles Buch" zunächst auf die Adresse des ersten zeigen lassen. for(i = 1; i < 1000; i++) { // Speicher für nächstes Buch holen aktuelles -> next = neues_buch(i); aktuelles = aktuelles -> next; // "aktuelles"-Zeiger auf nächstes Buch verdrehen. } printf("Fertig.\n"); // Zum Tüfteln: Wie würde man korrekterweise wieder alle 1000 // Buchkarten am Ende des Programmes mit free() freigeben? return 0; }