Hallo tremimi, das ist ein schönes Beispiel für eine einfach verkettete Liste. Manches könnte man noch optimieren aber ich denke mal das Beispiel soll das Problem und die Lösung veranschaulichen und nicht den optimalsten Code erzeugen. Zu Deinen Fragen: nextPlayer ist der Speicherplatz für den Zeiger des nächsten Players. Ist also der Zeiger für die Verkettung von Datensätzen der auf den nächsten zeigt / zeigen wird. Hättest Du noch einen "lastPlayer" wäre es eine doppelt verkettete Liste, weil Du dann vom aktuellen Element vorwärts (nextPlayer) und rückwärts (lastPlayer) gehen könntest. So geht es eben nur in eine Richtung. Die Definition von 3 Zeigern ist großzügig gewählt. Ging wie schon gesagt auch einfacher. newPlayer ist der Zeiger für einen neuen Datensatz. firstPlayer ist der "Anker" der verketteten Liste. Irgendwo muss sie ja beginnen. Das ist dann hier. Von hier wird ja auch die Ausgabe der Daten in der while Schleife gestartet. currentPlayer ist ein Zeiger der auf den aktuellen Datensatz zeigt der bearbeitet wird. Ist wie gesagt sehr großzügig gewählt. Deine dritte Frage ist ein type cast. Offiziell liefert malloc einen Zeiger des Typs void, Du brauchst aber einen Zeiger vom Typ struct player. Genau das teilst Du dem Compiler damit mit. Das ist ein cast um die Zuweisung formal richtig zu gestalten. Die meisten Compiler, zumindest die, die ich kenne, brauchen diesen cast eigentlich nicht. Ich hoffe ich konnte helfen. Bei Fragen, fragen. Gruß jobe
Sonstiger Berufsstatus, Punkte: 505