Als erses Achte darauf das du intialisierte Variablen verwendest (evtl kommt es auch daher das du teile des Codes weggelasen hast); zB.: an dieser Stelle:
|
C/C++ Quellcode
|
1
2
3
|
int i; // int i = 0;
...
struct konto *kontoptr = &konten[i]; /* Pointer auf aktuelles Konto */
|
i ist undefiniert und von daher ist der Pointer von kontoptr "ungülltig" -> besser int i = 0;
Anscheinend behandelst du Verkette liste anderst als gewähnlich:
|
C/C++ Quellcode
|
1
2
3
4
5
6
7
8
|
struct liste *neueListe()
{
struct liste *neu = (struct liste*) malloc(sizeof(struct liste));
neu->kont = NULL;
neu->next = neu; // -> normalerweiße NULL
neu->previous = neu; // -> normalerweiße NULL
return neu;
}
|
Die Struktur Eigenschaften next und previous sollten bei einem neuen Element auf das nächste bzw. vorhergie Element zeigen und nicht auf sich selbst, dass bringt nur Verwirrung.
Folgt kein nächstes oder vorheriges Element so sind die dementsprächenden Eigenschaften NULL.
Jedoch kann man ne geschlossen Liste so wie du machen, ich find dies jedoch nicht so schön.
Du sagst das dein Programm in der Funktion speicherInListe hängen bleibt, dies kann im Prinzip nur an einer Stelle sein und zwar bei der while-Schleife.
Schau dir mal nochmal die Funktion
strcmp an, bin mir nicht Sicher was du damit bezwecken möchtest.
Wenn du auf Gleichheit prüfen möchtest solltest du strcmp(..) == 0 benutzen.
Achte an dieser Stelle wie darauf dass du initialsierte Variablen ansprichst (aktuell->kont->name, neu->kont->name: Pointer gülltig?).
Mfg Rushh0ur