Hallo Leute,
wie mein Nick schon sagt bin neuling in diesem Thema.
Ich habe eine Aufgabenstellung bekommen bei der ich aus einer einfach verketteten Liste eine doppelt verkettete machen soll.
Als erstes wollte ich in der einfach verketteten Liste nun einen Zeiger einfügen der immer auf das ende der Liste zeigt und über diesen die neuen Werte "inhalt" anfügen.
Doch leider scheitert es schon dabei sehe irgendwie vor lauter Bäume den Wald nicht mehr.
Wer kann mir anhand des Beispiels helfen das ich es endlich richtig verstehe?
Ich weis dass ich einen Zeiger haben muß "ende" der das Listenende nach jedem Einfügen ermittelt und an die Funktion main() zurückliefert
und als Argument beim Einfügen übergebe ich dann das "ende" und nicht mehr den "anfang".
aber wie erstelle ich hier den Zeiger ende das er immer auf das Listenende zeigt
#include "stdafx.h"
using namespace System;
//die Struktur für den verwalteten Heap
ref struct beispiel {
int inhalt;
beispiel ^next;
};
void einfuegen(int inhaltneu, beispiel ^anfang) {
beispiel ^zeiger;
zeiger=anfang;
while (zeiger->next!=nullptr) {
zeiger=zeiger->next;
}
zeiger->next=gcnew beispiel;
zeiger=zeiger->next;
zeiger->inhalt=inhaltneu;
}
void ausgabe(beispiel ^anfang) {
beispiel ^zeiger;
zeiger=anfang;
Console::WriteLine("{0}", zeiger->inhalt);
while (zeiger->next != nullptr) {
zeiger = zeiger->next;
Console::WriteLine("{0}", zeiger->inhalt);
}
}
int main(array<System::String ^> ^args)
{
beispiel ^anfang;
anfang=gcnew beispiel;
anfang->inhalt=0;
for (int schleife=1;schleife<5;schleife++) {
einfuegen(schleife, anfang);
}
ausgabe(anfang);
return 0;
}