"int *array[10]" durch eine Liste ersetzen

janosch

Erfahrenes Mitglied
HI!

Ich habe mir ein Programm geschrieben(C++) in dem ich Daten in einem Array speichern kann (int *array[10]). Da dieses Array jetzt aber eine Feste grösse hat, würde ich das ganze jetzt gerne durch eine Doppelt verkette Liste ersetzen. Jedoch weiß ich nicht so recht wie ich das angehen soll. Kann mir jemand ansatzweiße erklären, am besten mit ein wenig C++Code, wie ich das am besten mache? Hab null Ahnung von Listen und würde das jetzt ganz gerne Lernen :mauer:

Eine STL::List soll es nicht sein möchte schon wiessen wie ich es von "Hand" mache. Bei Google habe ich auch schon was gefunden nur hab ich Probleme eben dieses Array: "*array[10]" durch die liste zu ersetzen. Ich weiß echt nicht wie ich das angehen soll.

In dem Array: "int *array[10]" speichere ich Referenzen von anderen Objekte und zwar so: "array[3]=&foobar" So das ganze möchte ich jetzt Dynamisch machen, dass ich eine beliebige Anzahl von Objekt-Referenzen speichern kann.

Ein kleiner denkanstoß würde mir schon reichen ;)

http://www.inversereality.org/tutorials/c++/linkedlists.html

Den Folgen Code habe ich von dem Link oben:

typedef struct List
{ long Data;
List* Next;
List()
{Next=NULL;
Data=0;
}
};
typedef List* ListPtr;

Würde es reichen, wenn ich folgende Zeile: "long Data" durch diese ersetze: "int *_data" damit ich dort eine Referenz zu einem Objekt speichern kann?

mfg Jan
 
Am besten erstellst du dir eine Klasse 'Liste' und eine Klasse 'Listenelement'. Die Liste enthält je einen Zeiger auf das erste und das letzte Element, eine Variable für die Anzahl der Elemente in der Liste sowie Funktionen zum Hinzufügen, Löschen und Suchen von Elementen, evtl. noch zum Sortieren. Das Listenelement enthält einen Zeiger auf die Daten und je einen Zeiger auf das vorhergehende und das folgende Element.
Das kannst du erstmal für feste Datentypen implementieren. Später kannst Du dann Templates daraus machen, dann kannst Du sie für jeden Datentyp verwenden.
 
Zurück