verkettete Liste
-
Kann mir keiner helfen? Ich weiß, es ist nicht so das Problem aber ich hänge echt fest!
-
vertausche doch einfach zeiger->name und zeiger1->name, wenn in der struct sonst nichts anderes steht
-
Der struct sieht folgendermaßen aus:
struct ware { char name[20]; char herstller[20]; float preis; struct ware *next; }
-
na dann tauschste halt alle members der struct. das wäre aber ziemlicher unsinn, obwohl es geht.
besser ist, wenn du in der liste die pointer austauschst.
-
Mach doch den klassischen ringtausch
a,b vertauchen:
a -> tmp
b -> a
tmp->bd.h
if((strcmp(zeiger->name,zeiger1->name))<0) { // d.h.zeiger->name ist < zeiger1->name somit tauschen tmp=zeiger1->next; zeiger1->next=zeiger->next; zeiger->next=tmp; //hier die beiden Listenelemente vertauschen - aber wie? abbruch=1; }
-
@PAD: das genügt bei einer verketteten liste nicht.
Nehmen wir einmal an wir vertauschen das 1. mit dem 2. element.
nach dem tausch zeigt anfang nicht mehr auf das erste element der liste.
Kurt
-
Ja, und genau das ist mein Problem!!!
-
Mach die doch einen zusätzlichen Pointer der auf den Anfang der Liste zeigt. Wenn sich jetzt das erste uns das zweite Element
vertauschen. Merke dir den neuen Anfang in diesem BasisPointer.
-
Und dann wäre da noch das problem das der next-pointer beim element vor den zu tauschenden elementen neu gesetzt werden muss. Dann sollte es aber funktionieren.
Kurt
-
Kannst du mir da bitte mal schreiben, wie das da aussehen müsste? Danke.