C++ doppelt verkettete Liste

mal dir doch einfahc mal ein bild wie welche pointer umgelegt werden müssen und wohin dann wirds die bestimmt klar. mit so nen bild sit das gar nicht so schwer zu erkennn und verstehen


list->right->left = list->left;
list->left->right = list->right;

hier mal einfach gegoogelt
http://perlgeek.de/de/artikel/doppelt-verkettete-listen
 
Zuletzt bearbeitet:
Du gehst die einzelnen Instanzen durch, bis du die mit der entsprechenden Nr. gefunden hast. Darauf verweist dann *tmp (bzw. bei dir *hilf ... oder wie auch immer)


tmp->prev->next = tmp->next; // der Nr. 2 die 4 als "next" zuweisen
tmp->next->prev = tmp->prev; // der Nr. 4 die 2 als "prev"
tmp->next->Nr = tmp->Nr; (Wenn da noch mehr Elemente kommen, musst du die ganzen Nummern neu vergeben...)

Dann noch den Speicher freigeben, auf den tmp verweist.

PS: Wenn Nr. die Kunden-Nr. ist, sollte sie gleich bleiben.
 
Zuletzt bearbeitet:
Und noch ein paar Hinweise nebenbei:

#include <stdio.h>

besser:

#include <cstdio>


Außerdem:

Code:
struct TKunde
{
	int nr,wahl;
	string vorname ;
	string nachname ;
	struct TKunde *next; // Das "struct" kannst du weglassen. In C 
	struct TKunde *prev; // wäre es hier zwingend notwendig. In C++
                             // ist es optional und wird normalerweise einfach weggelassen.
};


Und statt:

void hinzufuegen(void)

besser

void hinzufuegen()

weil ersteres eine C-Altlast ist und in C++ eigentlich nichts verloren hat (falsch ist es nicht, es hat aber auch keinerlei Bedeutung mehr).

Des weiteren solltest du mal gründlich überlegen, ob lauf, ende und hilf wirklich globale Variablen sein müssen. Globale Variablen sollte man meiden wie die Pest. Mach sie stattdessen zu lokalen Variablen (definiere sie in der main-Funktion) und reiche sie per Übergabeparameter an alle Funktionen durch, die auf sie zugreifen müssen.


Code:
int main(int argc, char *argv[])
{
    // Deklaration von den Eingabevariablen
    int wahl,wahl2;
    ...
}

So was (lokale Variablen deklarieren aber ihnen keine Initialwerte zuweisen) würde ich unbedingt vermeiden! Wenn du nicht sofort sinnvolle Werte zuweisen kannst, dann belege sie wenigstens mit 0 oder -1 oder irgend einem anderen angebrachten Wert vor. Man sollte sicherstellen, daß man niemals in die Verlegenheit gerät, später lesend auf eine Variable zugreifen zu wollen, die noch nicht initialisiert worden ist (eine der häufigsten Fehlerursachen überhaupt).
 
Danke euch erstmal für die Hilfe..

Werd mir die Tipps zu Herzen nehmen :)
 
Zurück
Oben