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

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

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

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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