#1 7. September 2005 Hi, Ich hab ein Problem beim Löschen in einer Cursorverketteten Liste. Ich habe mir das bislang so gedacht: Code: void entfernen(G & g, P p) { delMem(g.grupp,p); P tmp=get(g.grupp,p).cursor; get(g.grupp, p-1).cursor=tmp; g.akt--; } die Fuktionen delMem und get sehen so aus: Code: void delMem(M & m, P p) { m.frei[p]='f'; } KN & get(M & m, P p){return m.gr[p];} Die Liste sieht folgendermaßen in der Header Datei aus: Code: typedef int P; struct KN { S st; P cursor; }; struct M { //DS ist Feld static const int maxAnz = 7; KN gr[maxAnz]; char frei[maxAnz]; }; Bislang siehts so aus, dass man zwar Positionen entfernen kann; wenn man allerdings "hinter" dem gelöschten Objekt nochmal löschen möchte funzt es nicht. Vor der Position funktionierts noch. Kann mir da jemand einen Tip geben. Hab da ne Denkblockade. THX im vorraus. MfG + Multi-Zitat Zitieren
#2 13. September 2005 So ich habs jetzt. Waynes interessiert: Code: void entfernen(G & g, P p) { for (int i=p;get(g.grupp,i).cursor != g.letzt; i=get(g.grupp,i).cursor) { S tmp=get(g.grupp,i+1).st; //Verschieben um eine Pos get(g.grupp, i).st=tmp; } delMem(g.grupp,ende(g)); //Speicherplatz leeren get(g.grupp,g.akt).cursor=g.letzt; //neue letzte Pos g.akt--; //akt.Anz Knoten verringern } Vielleicht fällt jemanden auch noch ne bessere Lösung ein. Der kann sich ja mal per PN melden. Sonst würd ich sagen mach ich mal dicht. MfG + Multi-Zitat Zitieren