verkettete Liste

Gast #417563
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!!
Gast
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.
Gast
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?)
> 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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.