(Design)Fragen zur doppelt verketteten Liste



  • Hallo!

    Ich hab da ein paar Fragen zu den doppelt verketteten Listen:

    1.)

    Beim sortieren verwende ich BubbleSort und vergleiche ungefähr so die Namen

    if(temp->GetName() > temp->m_next->GetName())
         tausche;
    

    Der Name wird als String gespeichert. Wenn aber nun ein Name angegeben wird der mit einem Kleinbuchstaben beginnt wird dieser falsch sortiert. Macht string da einen Unterschied bzw. wie kann ich das verhindern.

    2.)

    Ich verwende nur ein paar mal string bzw. cout. Lohnt es sich dafür einen Namensraum zu öffnen? Darf man ungegniert immer welche öffnen oder gibt es da Regelungen? Wann sollte man lieber std:: verwenden?

    3.)

    Wenn das letzte Element der Liste gelöscht wird, wird NULL returned.
    Der Benutzer der Liste hat doch zu prüfen ob NULL returned wurde oder nicht, ungefähr so:

    if(ptrList)
    		ptrList->ReadList();
    

    Oder nicht?

    4.)

    Wie ist so etwas möglich:

    if(m_next == NULL && m_prev == NULL)
    	{
    		delete this;
    		return(NULL);
    	}
    

    Wieso kann ich noch return(NULL) ausführen wenn ich doch längst das derzeitige Object mit delete this gelöscht habe 😕

    Danke für die Hilfe!



  • Mir ist noch eine Frage eingefallen:

    5.)

    Sollte man kurze Methoden in der Header includieren?
    Ich denke die Header soll die Schnittstelle sein, nicht umsonst soll man doch Variablen private machen (Stichwort Informatinhiding). Wird dieses Prinzip nicht verletzt wenn jeder in der Header schon Einblick in, wenn auch kurze, Methoden bekommt?



  • nur kurz zu 5)
    Information hiding kann nicht bedeuten dass der benutzer deiner klasse nich wissen darf dass es eine funktion oder variable gibt. wenn du sie als private deklarierst dann hat er einfach keinen zugriff darauf (und schon ist sie versteckt 🙂 ).



  • logischeverknuepfung schrieb:

    Sollte man kurze Methoden in der Header includieren?

    ja.
    eigentlich müte man zu jeder funktion ja nen kleinen handbucheintrag machen oder nen kommentar, was sie tut, außer es ist offensichtlich (ok, es sollte immer offensichtlich sein).
    steht eine kurze methode als code im header, ist das oft viel bessere doku, als jeder text.



  • auch dieser beitrag wurde geschluckt. wenn ich disconnects beim senden habe, vergisst das forum seit neuestem meinen beitrag. kein zurückgehen oder so rettet daran mehr was. daher jetzt im 2. versuch nur nch ein satz:

    mach die sortierfunktion zu nem template und übergib ein komparator-objekt, das case-insensitive vergleicht.



  • Wär nett wenn mir jemand hilft...


Log in to reply