hilfe C++ verkettete Liste
-
hab ein problem mit einer praktikumsaufgabe:
Aufgabe:
geg :
struct Listenelement {
int info;
Listenelement* next;};ges: funktion Listenelement vorletztes(Listenelement* kopf) ,
welche das vorletzte element der liste zurückgibt unter der bedingung
liste > 3 elemente.Funktion Listenelement vertausche(Listenelement* kopf), welche z.b. das erste und letzte element der liste vertauscht, oder 2. und 3.?
kann ir einer helfen??? komme mit der position "vorletztes" nicht klar....
-
kannst ja auch noch listenelement* prev einbauen, als verknüpfung auf das vorherige element
-
aber dann verändere ich ja die aufgabenstellung......
es muss irgendwie auch ohne gehen....aber wie???
-
kann ir einer helfen??? komme mit der position "vorletztes" nicht klar....
Unter der Annahme, dass der next-Zeiger des letzten Elements auf 0 zeigt ist das vorletzte Element das für das element->next->next == 0 ist.
Jetzt musst du nur noch eine Schleife bauen, die von Kopf beginnend die next-Zeiger entlang wandert bis die Bedingung erfüllt ist.
-
was haltet ihr davon??? müsste funzen, oder?
Listenelement VorletztesElement(Listenelement *kopf){
Listenelement vorletztes;
while(kopf!=null)
{
vorletztes=kopf;
kopf++;
}
return vorletztes;
}
-
halte dich an humes vorschlag.
-
-
hume hat dir die abbruchbedingung schon gesagt.
mal es dir mal auf
-
phoenix123 schrieb:
kopf++;
nee, das ist ja kein array. so kommste zum nächsten 'kopf = kopf->next;'
-
musst nur aufpassen dass du next immer mit einer gültigen adresse füllst wenn du ein neues element anlegst