Liste => erste Versuche



  • Wie fügst du ein neues Element hinter dem Ersten ein?
    Was ist, wenn die Liste leer (== NULL) ist?



  • Wie fügst du ein neues Element hinter dem Ersten ein?

    Also das funktioniert mit dem gepostetet Code. Hab das mehrmals probiert, an allen erdenklichen Stellen einzufügen , und auch eine neues "erstes" element einzufügen... Wo siehst du das Problem?

    Ja wenn die Liste leer ist, das hab ich vergessen. War vom einfügen und löschen geblendet 🙂



  • beginner88888 schrieb:

    Wo siehst du das Problem?

    Wenn insert != list ist, dann wird das Element hinter insert in die Liste eingefügt.
    Wenn insert == list ist, dann wird das Element vor insert in die List eingefügt.

    Also bekommst du nie ein Element hinter dem Ersten. Bzw. schon, weil das zweite Element vor dem Ersten eingefügt wird.

    Du hast eine Liste mit einem Element:
    List->[0]->NULL

    Jetzt fügst du ein mit einf_adv(List,[0],[1]) Dann hast du
    List->[1]->[0]->NULL
    Aber eigentlich sollte doch List->[0]->[1]->NULL raus kommen

    Jetzt fügst du ein mit einf_adv(List,[0],[2]) Dann hast du
    List->[1]->[0]->[2]->NULL

    Jetzt fügst du ein mit einf_adv(List,[1],[3]) Dann hast du
    List->[3]->[1]->[0]->[2]->NULL

    Nach alle dem hätte ich
    List->[0]->[2]->[1]->[3]->NULL
    erwartet.

    Etwas verworren. Das macht nicht das, was deine Kommentare angeben.



  • Oh... jetzt versteh ich . Hmm.. glaub so hab ich es nicht probiert.

    Ich hab erst die Funtkion nur fürs einfügen "hinter" insert geschrieben.
    Das hat einwandfrei geklappt, gehe auch davon aus das das passt.

    Dann ahb ich das zusammengebastelt das ich auch das "erste" Element ändern kann. Also am Listenanfang einfügen.
    Das hab ich wiederum getestet und hat auch funktioniert.
    Hinter dem ersten Element einfügen hab ich nur vor dieser Änderung probiert.

    Mist. Ok, das muss ich dann noch machen, genauso wie wenn die Liste leer ist.

    =>Wichtig für mich : Stimmt das vorgehen? Also ich war mir "fast" sicher das ich´s jetzt gecheckt hab....



  • Also vor Montag werd ich wohl nicht weitermachen, aber trotzdem ist mir noch was eingefallen :

    Unterscheiden ob Vor dem ersten Element oder Nach dem ersten Objekt eingefügt werden soll....
    =>Soll das meine Funktion machen, wenn ja evtl. über einen "Zusatzparameter"

    if (behind){
        ....
       }else....
    

    Oder soll das Vor dem ersten Element einfügen, generell eine andere Funktion erledigen....

    Oder ist alles Käse? Also ohne Zusatzparameter fällt mir jetzt auf Anhieb nix ein , wie ich erkennen soll "WO" es lang geht...



  • Ändere deinen Vergleich in

    if (insert == NULL){ // einfügen am Anfang der Liste
    

    dann passt das schon.

    Davor muss dann noch die Abfrage für

    if (list== NULL){ // Liste noch leer
    

    und natürlich die Behandlung davon.



  • Ändere deinen Vergleich in

    if (insert == NULL){ // einfügen am Anfang der Liste
    

    dann passt das schon.

    =>Wo war der Smiliy mit dem Brett und dem Tisch gleich nochmal??....
    Danke!!!



  • beginner_offl schrieb:

    =>Wo war der Smiliy mit dem Brett und dem Tisch gleich nochmal??....

    Was kann denn der Smiley dafür ?
    Es ist doch dein Brett. 🤡



  • nö, der Smily flüstert mir immer den Code ins Ohr 😃



  • Würdet ihr das "Listen-Thema" weiterführen oder.... Also die meisten Bücher enden mit Einfach-Verkettete-Liste... Das es da noch mehr gibt ist mir bekannt, aber da wären wir wieder bei der Frage die ich schon mal gestellt habe in dem Thread :

    beginner_of schrieb:

    =>Das verkettete Listen in der Praxis nicht wirklich oft vorkommen wurde schon besprochen... Weiterhin wäre aber noch interssant.. Baumstrukturen usw usw... Nice to know oder essential element??

    ...mir viel das bei dynamsichen Speicherreservierungen schon auf, das ich das für meine "pillepalle" Prog´s wohl nie wirklich sinnvoll nutzen werde, höchstens um in Übung zu bleiben, da ich fast immer weiß wieviel Speiche ich brauche, oder den Puffer groß genug mache. Aber da geht´s ja auch um nix 🙂

    Muss man mal gemacht haben oder... soll man mal gehört haben... oder braucht man wirklich öfters....

    Ich hoffe ihr wisst was ich meine ...


  • Mod

    Eine Baumstruktur sollte man mal programmiert haben, finde ich. Falls es das war, was du mit deinem Beitrag erfragen wolltest 😕 .

    Abgesehen davon, dass ich in meinen Programmen andauernd Baumstrukturen selber benutze, habe ich sogar mal notwendigerweise eine eigene, neue Baumstruktur entwickelt, weil ich mal ganz spezielle Ansprüche hatte. Da war es sicher auch nützlich, mit den einfachen Versionen Erfahrung zu haben.



  • Falls es das war, was du mit deinem Beitrag erfragen wolltest

    Durchaus. Wie gesagt, ich kann nicht wirklich einschätzen was man mal gemacht haben sollte, oder wo es reicht mel gehört zu haben....
    =>Darum die Frage an die Profis 🙂


  • Mod

    P.S. zu meinem Beitrag oben: Es ist auch gut, mal eine Listenstruktur programmiert zu haben. Wollte ich nur mal klar stellen, damit das keiner falsch liest. Ist eine gute Vorbereitung für die anderen, komplexeren Strukturen.



  • Ok. In das Thema der "Binären" Bäume werd ich mich aber diesmal erst gründlich einlesen. Will Eure Nerven nicht überstrapazieren :-).
    Ich denke aber es wird bestimmt die ein oder andere Frage auftauchen.

    @SeppJ : Ich weiß, keiner gibt gerne was von seinen "Schätzchen" Preis, aber vielleicht als kleine Info für die wissbegierigen....

    dass ich in meinen Programmen andauernd Baumstrukturen selber benutze

    ...Was , oder wofür brauchst du die so oft?

    Nicht falsch verstehen, aber es viel mir bei LIsten schon etwas schwer den Anwendungsfall zu erkenne, da das Beispiel mit dem Telefonbuch und Automarke+Farbe.... aus den meisten Büchern.... Naja...etwas mau ist. Gut, meine Liste reiht sich mühelos ein in die Liste der Sinnlosen Programme...


  • Mod

    beginner88888 schrieb:

    dass ich in meinen Programmen andauernd Baumstrukturen selber benutze

    ...Was , oder wofür brauchst du die so oft?

    Wenn man Ordnung, nicht nach einem Index, sondern nach einer Eigenschaft der Elemente selbst, braucht.

    Schreib beispielsweise mal ein Programm, das zählt, wie häufig welche Zahl eingegeben wird. Eine lineare Datenstruktur ist da eher ungünstig.



  • Ok, danke erstmal. Werd mich jetzt dann den Büchern widmen.

    Noch eine Frage vorab, eine 2fach verkettete Liste, (mit Zeiger auf das nächste UND Zeiger auf das Vorgehende Objekt).. ist aber KEIN binärer Baum im eigentlichen Sinn oder?

    Baum =Wurzel =>Element links, Element rechts .. Ob dann links oder rechts größer werdend ist dann wohl geschmackssache?


  • Mod

    beginner_offl schrieb:

    Noch eine Frage vorab, eine 2fach verkettete Liste, (mit Zeiger auf das nächste UND Zeiger auf das Vorgehende Objekt).. ist aber KEIN binärer Baum im eigentlichen Sinn oder?

    Weder im eigentlichen Sinn, noch in sonst irgendeinem Sinn, außer vielleicht im Irrsinn.

    Baum =Wurzel =>Element links, Element rechts .. Ob dann links oder rechts größer werdend ist dann wohl geschmackssache?

    Das ist nicht Geschmackssache, sondern Teil der Funktion des Baums. Je nachdem, wie man die Elemente ordnet, kann die Baumstruktur sehr unterschiedliche Dinge leisten. Das ist einer der Gründe, wieso sie so oft vor kommt. Es gibt einfach sehr viele verschiedene Dinge, die man mit Bäumen tun kann.


Anmelden zum Antworten