Doppelte verkettete Liste
-
Hi, ich lerne seit 2 Monaten c++/cli und bin grad beim oben genannten Thema. Könnt mir jemand erklären warum mein Code nicht funktioniert und ob listende ^ sein zweck erfüllt?
#include "stdafx.h"
using namespace System;
ref struct listenelement {
String ^daten;
listenelement ^next;
listenelement ^previous;
};listenelement ^anhaengen(String ^datenneu, listenelement ^listenende) {
listenelement ^hilfsHandle;
listenelement ^hilfsHandle2;hilfsHandle = listenende;
while (hilfsHandle->next != nullptr)
hilfsHandle = hilfsHandle->next;
hilfsHandle2 = hilfsHandle;
hilfsHandle->next = gcnew listenelement;
hilfsHandle = hilfsHandle->next;
hilfsHandle->previous = hilfsHandle2;
hilfsHandle->daten=datenneu;listenende = hilfsHandle;
return listenende;
}
Void ausgeben(listenelement ^listenanfang, listenelement ^listenende) {listenelement ^hilfsHandle;
hilfsHandle = listenanfang;
Console::WriteLine("{0}",hilfsHandle->daten);
hilfsHandle = listenende;
while (hilfsHandle->next != nullptr) {
hilfsHandle = hilfsHandle->next;
Console::WriteLine("{0}",hilfsHandle->daten) ;
}
}
Void ausgeben_Back(listenelement ^listenende) {listenelement ^hilfsHandle;
hilfsHandle = listenende;
Console::WriteLine("{0}",hilfsHandle->daten);while (hilfsHandle->previous != nullptr) {
hilfsHandle = hilfsHandle->previous;
Console::WriteLine("{0}",hilfsHandle->daten) ;
}
}int main(array<System::String ^> ^args)
{
listenelement ^listenanfang;
listenanfang = gcnew listenelement;
listenanfang->daten="Element 1";listenelement ^listenende;
listenende= gcnew listenelement;for (Int32 schleife=2;schleife<200;schleife++)
anhaengen("Element "+schleife,listenende);ausgeben(listenanfang,listenende);
ausgeben_Back(listenende);Console::Read();
return 0;
}
-
Könntest Du bitte Code-Tags benutzen, liest sich besser.
Ich mach Dir das mal eben...#include "stdafx.h" using namespace System; ref struct listenelement { String ^daten; listenelement ^next; listenelement ^previous; }; listenelement ^anhaengen(String ^datenneu, listenelement ^listenende) { listenelement ^hilfsHandle; listenelement ^hilfsHandle2; hilfsHandle = listenende; while (hilfsHandle->next != nullptr) hilfsHandle = hilfsHandle->next; hilfsHandle2 = hilfsHandle; hilfsHandle->next = gcnew listenelement; hilfsHandle = hilfsHandle->next; hilfsHandle->previous = hilfsHandle2; hilfsHandle->daten=datenneu; listenende = hilfsHandle; return listenende; } Void ausgeben(listenelement ^listenanfang, listenelement ^listenende) { listenelement ^hilfsHandle; hilfsHandle = listenanfang; Console::WriteLine("{0}",hilfsHandle->daten); hilfsHandle = listenende; while (hilfsHandle->next != nullptr) { hilfsHandle = hilfsHandle->next; Console::WriteLine("{0}",hilfsHandle->daten) ; } } Void ausgeben_Back(listenelement ^listenende) { listenelement ^hilfsHandle; hilfsHandle = listenende; Console::WriteLine("{0}",hilfsHandle->daten); while (hilfsHandle->previous != nullptr) { hilfsHandle = hilfsHandle->previous; Console::WriteLine("{0}",hilfsHandle->daten) ; } } int main(array<System::String ^> ^args) { listenelement ^listenanfang; listenanfang = gcnew listenelement; listenanfang->daten="Element 1"; listenelement ^listenende; listenende= gcnew listenelement; for (Int32 schleife=2;schleife<200;schleife++) anhaengen("Element "+schleife,listenende); ausgeben(listenanfang,listenende); ausgeben_Back(listenende); Console::Read(); return 0; }
Du hast die Liste ziemlich unübersichtlich gebaut.
listenelement ^previous;
verstehe ich genauso wenig wie...
listenelement ^hilfsHandle2;
Vllt. solltest Du sie nochmal neu aufbauen.