Klassen + Einfach verkettete Listen
-
Hallo,
wir haben heute in der Schule mit Listen angefangen. Wir sollen ein Programm schreiben, zum Beispiel zum suchen von einem Namen was vorher in einem Speicherbereich abgelegt worden ist. Kann mir vielleicht jemand von euch erklären wie ich Zeiger in Klassen implementiere?? Die funktionalität von Zeigern ist mir einigermassen klar(muss mich halt noch mit beschäftigen), aber ich weiss wirklich nicht wie ich diese in meine Klassen implementiere!!! Ich hasse es wenn wir einfach Syntax in der Schule machen, aber keine prakischen Beispiele bei rumkommen.
So sieht meine Klasse aus:
Vielleicht versteht man so besser worum es geht!!!class TPerson { private: AnsiString name ; AnsiString vorname ; TDateTime gebtag ; TPerson* naechster ; public: void setname(AnsiString) ; void setvorname(AnsiString) ; void setgebtag(TDateTime) ; void setzeigernaechster(TPerson*) ; AnsiString getname() ; AnsiString getvorname() ; TDateTime getgebtag() ; AnsiString getAsString() ; TPerson* getzeigernaechst() ; } ;
Habe auch schon die Suche genutzt, aber nichts entsprechendes gefunden.
Vielen dank im voraus
-
Im Grunde ist das nicht so schwer, du fängst mit einem Element an:
TPerson * root = new TPerson; // Erster Eintrag
root->setzeigernaechster (new TPerson); // zweites Element
// Jetzt brauchen wir noch nen Zeiger der auf das aktuelle Element zeigt
TPerson * aktuell = root->getzeigernaechster ();// 2. Element
aktuell->setzeigernaechster (new TPerson);// Adresse von 2.Element
aktuell = aktuell->getzeigernaechster ();// 3.Element
aktuell->setzeigernaechster (new TPerson);Du siehst ist im Grunde ganz einfach, du kannst z.B. so ne Liste erstellen:
TPerson * root = new TPerson;
TPerson * aktuell = &root;// Erstellen von Liste mit 10 Elementen (mit root)
for (int i = 0; i < 9; i++)
{
aktuell->setzeigernaechster (new TPerson);
aktuell = aktuell->getzeigernaechster ();
}Deine Methode zum setzen des Zeigers ist etwas ungeschickt, so kannst du kein
Ende der Liste markieren, wie z.B. mit einem Nullzeiger.
-
ok...ist einigermassen klar(muss sich erst setzen) und ich muss es einfach mal ausprobieren, wie das halt so ist beim programmiren!!
kann ich den Code einfach zu den Methoden der KLasse schreiben???
sorry für die vielen Fragen!!!Was meinst du mit:
Deine Methode zum setzen des Zeigers ist etwas ungeschickt, so kannst du kein
Ende der Liste markieren, wie z.B. mit einem Nullzeiger.kann ich nichts mit anfangen! Haben es heute so besprochen... aber trotzdem danke schon mal für die schnelle Hilfe!
-
Du musst ja wissen wo das ende deiner Liste ist, das musst du irgendwie markieren
z.B. durch einen Nullzeiger (int *p = 0;)Der von mir gezeigte Code gehört nicht in die Klasse sondern dorthin wo du mit
der Liste arbeiten möchtest
-
ich werde es mal ausprobieren..vielen dank!!!
Hoffe das es funktioniert, ansonsten krieg ich morgen ein problem...muss ich nämlich morgen im Unterricht fertig machen.
-
So, da bin ich schon wieder!!!
Steh grad etwas auf dem Schlauch und hoffe ihr könnt mir helfen.
Hab mein Programm soweit fertig, nur das ich im moment absolut nicht drauf komme wie ich einen Datentyp " TPerson " in einen String umwandle. Was das bedeutet muss ich euch wahrscheinlich nicht sagen(keine möglichkeit zu compilieren)....bitte helft mir!!!!
-
Wozu soll das gut sein?
Wenn zur Ausgabe:
Du kannst doch auf alle Elemente in der Klasse zugreifen, du kannst sie also auch ausgeben.
-
ja..ist für die Ausgabe.
Würde gern z.B. einen Namen in eine Listbox ausgeben, dafür muss ich mein " TPerson " in einen String umwandeln. Problem ist das ich mit der Klasse die ich gepostet habe arbeiten muss(vorgabe vom Lehrer), und dort gibt es ja auch schon die Methode " getAsString "
-
Na dann ist es ja kein Problem den Namen in die Listbox auszugeben.