Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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....;) ;)

Geschrieben

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...

  • 2 Wochen später...
Geschrieben

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

Geschrieben

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.

Geschrieben
Nebenbei ist das ganze auchn fettes Speicherleck.
Im Beispielcode - so schlecht er sein mag - ist kein Speicherleck.

Bei dir fehlt im dekonstruktor
Destruktor 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.

Geschrieben

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.

Geschrieben

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.

Geschrieben

symikolon war gewohnheit :rolleyes:

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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...