TheBest Geschrieben 15. April 2006 Teilen Geschrieben 15. April 2006 Hi, ich habe mir jetzt das Thema Listen angeeignet und wollte wissen ob man dieses Programm als Listenprogramm bezeichnen kann und ob es noch Verbesserungsvorschläge gibt??? #include<iostream> #include<string> using namespace std; class CListe { public: char Name[50]; CListe* next; void Eingabe(); void Ausgabe(); }; void CListe::Eingabe() { cout<<"Bitte Namen eingeben: "; cin>>Name; } void CListe::Ausgabe() { cout<<"Die eingegebenen Namen: "<<Name<<endl; } int main() { CListe* neu; neu=new CListe; neu->Eingabe(); neu->next; neu->next=new CListe; neu->next->Eingabe(); neu->next->next=new CListe; neu->next->next->Eingabe(); neu->next->next->Ausgabe(); delete neu->next->next; neu->next->Ausgabe(); delete neu->next; neu->Ausgabe(); delete neu; return 0; } Danke im voraus.... ;) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 16. April 2006 Teilen Geschrieben 16. April 2006 Also ich seh da so nicht viel Sinn drin, denn für gewöhnlich sollte die Listenklasse selbst die Funktionen anbieten um Elemente hinzuzufüge, zu löschen usw. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TDM Geschrieben 17. April 2006 Teilen Geschrieben 17. April 2006 Ich würde ein CNode verwenden statt listenelemente auf sich selbst zeigen zu lassen is mir damals mal passiert dass ich auch nur eine Klasse genommen hatte, dann ging aber irgendwie nicht das zurückwärts zählen weil er vom vorletzten immer rückwärts auf das letzte (und nicht auf das erste) gezeigt hat... ansonsten kann ich meinem Vorredner nur zustimmen... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kratzy974 Geschrieben 27. April 2006 Teilen Geschrieben 27. April 2006 Das Beispiel ist eine verkettete Liste. Eine Verkettete Liste benötigt auf jeden Fall entsprechende Construktoren (Copy / Standard) und Operatoren, damit sichergestellt ist, daß immer legale Werte in dem Pointer ist. Jedoch wäre auf jedenfall zu prüfen, ob die STL Klasse "vector" oder "list" in dem Fall besser wären, und eine Klasse, welche die Liste und den Zugriff darauf sichert. Grüße, Kristian Kratzenstein Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sigi Geschrieben 27. April 2006 Teilen Geschrieben 27. April 2006 Nebenbei ist das ganze auchn fettes Speicherleck. Bei dir fehlt im dekonstruktor deines CList dings ne Überprüfung ob der Listzeiger darin nen Objekt enthält sonst werden die verketteten nicht mitgelöscht. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 27. April 2006 Teilen Geschrieben 27. April 2006 Nebenbei ist das ganze auchn fettes Speicherleck.Im Beispielcode - so schlecht er sein mag - ist kein Speicherleck. Bei dir fehlt im dekonstruktorDestruktor heißt das Ding. deines CList dings ne Überprüfung ob der Listzeiger darin nen Objekt enthält sonst werden die verketteten nicht mitgelöscht. Ob man so etwas braucht, kommt auf die Implementierung der Listenklasse an - die es hier nicht gibt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sigi Geschrieben 27. April 2006 Teilen Geschrieben 27. April 2006 Hm stimmt ein delete ist beim lesen wohl untergegangen. Hm dann formulier ich das ganze um: Ich find deine Implementierung relativ unsicher wenn das löschen nicht übernommen wird. Wobei du dann auch aufpassen must, wenn du ein Element in mitten deiner Liste löschen willst, dass du den Zeiger vom alten Object umschiebst. Da fehlt eigentlich recht viel was zu einer _echten_ bzw. _typischen_ Listenimplementierung gehört. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kratzy974 Geschrieben 27. April 2006 Teilen Geschrieben 27. April 2006 Das macht sicherlich den unterschied zwischen struct und class aus. Die Verantwortlichkeit sollte von einer class voll übernommen werden, dh auch Destruktion. Das Beispiel zeigt eine verkettete Liste als struct. Ich weiß, struct == class mit public, aber vom Verständniss aus der C Zeit ist struct eine Datensammlung. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TDM Geschrieben 27. April 2006 Teilen Geschrieben 27. April 2006 Also in C geht es auch dass ich Funktionen in ein Struct implementier, somit ist das keine Datensammlung Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 27. April 2006 Teilen Geschrieben 27. April 2006 Also in C geht es auch dass ich Funktionen in ein Struct implementierSicher? Zeig mal ein Beispiel. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TDM Geschrieben 27. April 2006 Teilen Geschrieben 27. April 2006 struct test { char p; print(){printf("%c", p)}; } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kratzy974 Geschrieben 27. April 2006 Teilen Geschrieben 27. April 2006 Das soll C kompeliert funktionieren (zu dem kleinen Simikolon fehler) ? Ich denke nicht. Als C++ kompeliert funktioniert dies natürlich (wie gesagt struct == class public). Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TDM Geschrieben 27. April 2006 Teilen Geschrieben 27. April 2006 symikolon war gewohnheit denke aber schon dass es mit c funktioniert... bräuchte nur nen reinen C-Kompiler um das zu testen aber irgendwo hatte ich das mal gelesen edit: gut, das beispiel war falsch... struct wird benutzt um einen zusammengesetzen Datentyp zu erzeugen. Innerhalb der Struktur kann man alle Datentypen geordnet strukturiert verwenden. (In C kann man auch Funktions- zeiger-Variablen verwenden um Funktionen aus C-Strukturen wie aus C++-Klassen aufzurufen. Im Linuxkern sehr oft verwendet.) http://linux-swt.de/oldlswt/lswtpg/c.html Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kratzy974 Geschrieben 27. April 2006 Teilen Geschrieben 27. April 2006 Ein C Kompiler : Visual Studio C++ kann einzelne Dateien auch als reines C kompilieren. Grüße. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.