Forum: PC-Programmierung verkettete Liste


von Stef (Gast)


Lesenswert?

Hallo ihr,

ich habe in C eine einfach verkettete Liste programmiert. Jedes
Listenelement beinhaltet unter anderem den Index des jeweiligen
Elements (als INT-Wert). Wenn ich nun ein neues Element in der Mitte
der Liste einfüge,  müssen sich ja die Indizes aller darauffolgender
Listenelemente um 1 erhöhen.

Bei mir sieht das so aus wenn ich an der stelle 1 ein Element einfüge
und die Liste ausgebe:

vorher:
Index
0
1
2
3
4
...

nachher:
0
1
1
2
3
4..


Wie könnte man das am besten programmieren?

Vielen Dank schon mal im Voraus!!

von Detlev (Gast)


Lesenswert?

Na, du hast doch sicher noch einen Zeiger, der auf das neue Element
zeigt. Von da aus klapperst du die Liste bis zum Ende ab und erhöhst
die Indizes ODER du hast eine Laufvariable, die den Index mitzählt und
weißt den Elementen die entsprechende Nummer zu.

von Stef (Gast)


Lesenswert?

danke für die antwort.das mit dem abklappern der liste ist mir auch
eingefallen. hab nur gedacht es gibt was eleganteres.

von inoffizieller WM-Rahul (Gast)


Lesenswert?

komische verkettete Liste...
Eigentlich sollte jedes Element die Adresse des folgenden Elements
haben.
So kann man nämlich die Elemente einfach (unsortiert) in einer Tabelle
ablegen, und braucht nur den Folgeindex des vorhergehenden Elements in
der Liste verändern. (wirr?)

von Karl heinz B. (kbucheg)


Lesenswert?

> hab nur gedacht es gibt was eleganteres

Nochmal drüber nachdenken ob du den Index überhaupt brauchst.
Macht nur Arbeit beim Einfügen, Löschen und Umsortieren.

Für den Fall, dass man den Index tatsächlich irgendwo mal
braucht, kann man ihn sich ganz einfach vorübergehend erzeugen,
indem man durch die komplette Liste huscht und den Elementen
die Indexnummer erst dann durchzählt. Ist eine Anwendung
des 'Lazy Evaluation' Prinzips: "mache eine Arbeit erst dann
wenns nicht mehr anders geht". Wozu aufwändig einen Index
bei jeder Listenänderung mitführen, wenn ich das Erstellen
des Index auch solange vertagen kann, bis ich den Index auch
wirklich brauche.

von Stef (Gast)


Lesenswert?

Danke hat sich erledigt. Musste das mit dem kompletten durchlaufen der
liste machen. brauche den index nämlich wirklich.

danke für die antworten.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.