Fragensteller
Verbesserungsvorschläge zur Implementation meiner ListenKlasse

Allgemeine Diskussion
-
Hy,
ich versuche wieder langsam in die Materie C++ zurückzufinden und ich arbeite zur Zeit an der Implementation einiger Algorithmen.
Ich hatte vor allem Probleme mit dem Speichermanagement meiner Listen-Klasse, da meine Algorithmen intensiv den copy konstruktor gebrauchen.
Ich würde gerne wissen, welche Verbesserungsvorschläge ihr zu meinen Quelldateien hättet und ob ihr vielleicht bessere Vorgehensweisen hättet.
Anhang:
Alle Antworten
-
Ich benutze nicht std::list, weil ich wie schon gesagt Übung in C++ brauche, da ich weiß das ich Probleme mit Pointern habe (da sind linked lists eine wunderbare Übung) und weil ich von meiner UNI her wissen muss wie man solche Datenstrukturen konstruiert.
-
Ich benutze nicht std::list, weil ich wie schon gesagt Übung in C++
brauche, da ich weiß das ich Probleme mit Pointern habe (da sind linked
lists eine wunderbare Übung) und weil ich von meiner UNI her wissen muss
wie man solche Datenstrukturen konstruiert.Naja...
Meine Verbesserung wäre: Doppelt verkettete Listen zu verwenden.
Grund:
Löschen eines Items wird einfacher.
Traverse nach vorne und hinten ist möglich...Zu überdenken an Deinem Code:
- listEntry::inList arbeitet rekursiv! Warum? Ist unnötig und riskiert nur einen Stack-Overflow...
- listEntry::addLast arbeitet dito rekursiv! Zudem finde ich es immens schlecht, wenn das Hinzufügen in einer Liste O(n) hat und nicht O(1).
operator| läuft zum hinzufügen dadurch jedesmal alle bisherigen Elemente ab. Der Sinn einer Liste ist ja gerade beim Hinzufügen und Löschen O(1)
- Copy operator nicht implementiert. Durch Verwendung von auto_ptr würde eine Zuweisung einer Liste an eine andere die Quelle "zerstören".Ich würde niemals listEntry selbst mit den Funktionen eine Liste ausstatten... ich würde eher einen Ansatz wählen wie dies std::list macht.
Zu mehr Kommentaren langt meine Zeit aktuell nicht...
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de