fgets liest im Code keinen Input ein [linked list, char array]



  • hey Leute,
    ich experimentiere mit linked listen um ein Gefühl für die Sache zu bekommen.

    Ich habe jetzt ein konkretes Problem, und zwar liest ein bestimmtes fgets im code nichts ein und ich verstehe nicht warum. Der Compiler sagt mir auch, dass der Code syntaktisch wenigstens korrekt ist (ich weiß, das heißt noch nichts, aber zumindest konnte ich erstmal sauber compilieren 🙂 ).

    Ich markiere die Stelle wo es hapert.

    void addPokemon(void){
    
        pokemonPtr firstPtr;
        pokemonPtr thisPokemon;
        firstPtr = NULL;
    
        firstPtr =(pokemon *) malloc(sizeof(pokemon));
        firstPtr->name = malloc(sizeof(char) * POKEMON_LENGTH);
    
        printf ("Enter the name of the Pokemon.\n");
        fgets(firstPtr->name, POKEMON_LENGTH, stdin);
        getchar();
        printf ("Enter the number of the Pokemon.\n");
        scanf("%d",&firstPtr->number);
    
        firstPtr->next =(pokemon *) malloc(sizeof(pokemon));
    
        thisPokemon = firstPtr->next;
    
        int i = 0;
    
        while (i < 10){
    
            thisPokemon->name = malloc(sizeof(char) * POKEMON_LENGTH);
    
            printf ("Enter the name of the Pokemon.\n");
            fgets(thisPokemon->name, POKEMON_LENGTH, stdin);
    

    Genau hier ist der Fehler in der Ausführung, dieses fgets liest keine Daten ein.

    printf ("Enter the number of the Pokemon.\n");
            scanf("%d",&thisPokemon->number);
    
            thisPokemon->next =(pokemon *) malloc (sizeof(pokemon));
            thisPokemon = thisPokemon->next;
    
            i++;
    
        }
    
        thisPokemon->next = NULL;
    
    }
    

    Danke schonmal für euren Input

    Grüße 🙂



  • Bitte komplett kompilierbares Beispiel posten.

    (Ich vermute aber stark, dass dein Formatstring für scanf "%d\n" sein sollte. Mit "%d" bleibt noch das Newline im Eingabebuffer, welches sich dann fgets schnappt, als "Ende der Daten" interpretiert, und dann ein NUL-Byte in deinen String schreibt.

    Sind aber nur Mutmaßungen).


  • Mod

    dachschaden schrieb:

    (Ich vermute aber stark, dass dein Formatstring für scanf "%d\n" sein sollte. Mit "%d" bleibt noch das Newline im Eingabebuffer, welches sich dann fgets schnappt, als "Ende der Daten" interpretiert, und dann ein NUL-Byte in deinen String schreibt.

    Whitespace am Ende eines scanf-Formatstrings ist praktisch nie, was man haben möchte.



  • SeppJ schrieb:

    Whitespace am Ende eines scanf-Formatstrings ist praktisch nie, was man haben möchte.

    Wäre

    while ((c = getchar()) != EOF && c != '\n')
    

    eine bessere Lösung?


  • Mod

    dachschaden schrieb:

    SeppJ schrieb:

    Whitespace am Ende eines scanf-Formatstrings ist praktisch nie, was man haben möchte.

    Wäre

    while ((c = getchar()) != EOF && c != '\n')
    

    eine bessere Lösung?

    Bin ich auch kein Fan von. Kommt aber auf die genaue Anforderung an. Eigentlich geht es hier doch wohl darum, führenden Whitespace zu überspringen, egal welcher Art. Die bisher gezeigten Methoden sind sehr tastaturspezifisch. Ich würde eher scanf mit Formatstring " %[^\n]" machen (Längenangabe ist noch zu ergänzen, wollte das Beispiel nicht verkomplizieren).



  • Wer verkettete Listen benutzt, ist selber schuld.
    fgets liest auch '\n' mit in den String.
    "liest keinen Input ein" ist keine Fehlerbeschreibung zumal ohne konkrete Beispieldaten.
    scanf und fgets zu benutzen, ist meist keine gute Idee, versuche mal, beide Werte mit 1x scanf einzulesen.



  • dachschaden schrieb:

    Bitte komplett kompilierbares Beispiel posten.

    (Ich vermute aber stark, dass dein Formatstring für scanf "%d\n" sein sollte. Mit "%d" bleibt noch das Newline im Eingabebuffer, welches sich dann fgets schnappt, als "Ende der Daten" interpretiert, und dann ein NUL-Byte in deinen String schreibt.

    Sind aber nur Mutmaßungen).

    Das klingt nach einer ziemlich nachvollziehbaren Mutmaßung für mich.
    Ich bin jetzt auf scanf umgestiegen und konnte das Problem somit komplett beheben.

    scanf("%s",firstPtr->name);
    
    scanf("%s",thisPokemon->name);
    

    Im Endeffekt fehlt nur meine magicnumbers/definitions header
    In main steht zur Zeit nur die Funktion

    #ifndef DEFINITIONS_H
    #define DEFINITIONS_H
    
    #define POKEMON_LENGTH 15
    #define POKEDEX_LENGTH 15
    
    typedef struct pokemon *pokemonPtr;
    
    typedef struct pokemon{
    
        char *name;
        int number;
        pokemonPtr next;
    
    }pokemon;
    
    #endif // DEFINITIONS_H
    

    Wer verkettete Listen benutzt, ist selber schuld.

    Solche Kommentare regen mich ehrlich etwas auf. Ich nutze ja nicht verkettete Listen, weil ich es für die beste Lösung halte, sondern weil es auf dem Weg die Programmiersprache zu lernen und zu üben empfohlen wird zu lernen. Sicher werde ich irgendwann feststellen, dass verkettete Listen evtl. auch nicht die effektivste Lösungen sind, aber dafür muss ich erstmal verstehen wie sie funktionieren und sie auch anwenden können. Das versuche ich hier aktiv. Statt solche Kommentare einfach so stehen zu lassen, kannst du auch gerne hinzufügen, warum verkettete Listen nicht gut sind. Weil dieser Kommentar sagt mir gar nichts.

    fgets liest auch '\n' mit in den String.

    Ja das konnte ich bereits herausfinden und lernen, daher habe ich zunächst auf scanf gesetzt. Allerdings muss ich das noch checken, wie man das trotzdem machen kann. Ich habe gelesen getchar() soll den "Whitespace" schlucken, aber wie das genau geht oder was da genau passiert konnte ich bisher nicht verstehen.

    "liest keinen Input ein" ist keine Fehlerbeschreibung zumal ohne konkrete Beispieldaten.

    Naja es wurde scheinbar verstanden was ich meine. Ich kann nichts eingeben, sobald fgets ein zweites mal ausgeführt wird. Es wird quasi einfach übersprungen. Wie ich bereits herausfinden konnte, liegt das an dem \n meiner letzten Eingabe von fgets. Und es soll mit einem getchar() aufzuheben gehen. Wiegesagt den theoretischen Sinn dahinter verstehe ich leider nicht wirklich (was für mich wichtiger ist, als dass es erstmal funktioniert, ich will es ja wirklich verstehen).

    scanf und fgets zu benutzen, ist meist keine gute Idee, versuche mal, beide Werte mit 1x scanf einzulesen.
    

    Achja stimmt, ich hatte anfangs auch 2 fgets() dastehen, aber scheinbar hat es irgendwie Probleme Integer einzulesen, bzw. alles was kein string ist.



  • Okay, gleich noch eine Frage, wenn wir dabei sind. Ich möchte eine Funktion

    void showPokemon
    

    schreiben.

    Die Pointer, die ich in addPokemon() geschrieben habe, dürfte ich theoretisch gesehen nicht in der Funktion mehr aufrufen können, weil sie doch lokal in einer Funktion deklariert wurden. Müsste ich nicht sämtliche Pointer global deklarieren, damit ich sie in den Funktionen wiederfinden kann?

    Also anders gesagt, die Adresse für firstPtr müsste ich doch theoretisch gesehen außerhalb der Funktion addPokemon() deklarieren, damit ich sie in showPokemon() wieder benutzen kann, ist das so?



  • Die Pointer, die ich in addPokemon() geschrieben habe, dürfte ich theoretisch gesehen nicht in der Funktion mehr aufrufen können, weil sie doch lokal in einer Funktion deklariert wurden. Müsste ich nicht sämtliche Pointer global deklarieren, damit ich sie in den Funktionen wiederfinden kann?

    [quote]

    die Adresse für firstPtr müsste ich doch theoretisch gesehen außerhalb der Funktion addPokemon() deklarieren

    die kannst du nicht nur theoretisch nicht nutzen - sondern auch praktisch 🙂

    die Pointer als Parameter an deine Funktion übergeben



  • Gast3 schrieb:

    die kannst du nicht nur theoretisch nicht nutzen - sondern auch praktisch 🙂

    😃 😃 😃 😃

    die Pointer als Parameter an deine Funktion übergeben

    achja, das kann ich ja auch machen 😃
    Mein Kopf ist gerade noch so verdreht durch die Anwendung der linked List 😕 😕 😕
    , dass ich an das offensichtliche schon garnicht mehr denke 😃



  • Gehe davon aus, dass es mit meiner oder anderer Altvorderen Aussage hier seine Richtigkeit hat, schließlich glaubst du anderen "Empfehlungen" zum Weg beim C-Lernen ja auch blind.
    Gehe davon aus, dass du hier nicht der Erste bist, der mit solchem Uni-Laiengeschwätz aufschlägt. Und nicht jedes Mal wird hier alles auch noch detailliert und anfängergerecht begründet. Sowas wäre nämlich Sache deines Lehrers, aber da traust du dich ja nicht zu fragen, wo der Sinn darin bestehen soll, "zunächst" mal etwas zu lernen von dem schon vorher klar ist, dass es bessere, richtigere und praxisorientiertere Lösungen gibt.
    Glaub mir, dein Lehrer ist nur zu faul/inkompetent, sich gescheite Übungen zu Zeigern auszudenken.

    Dein letzter Versuch ist ebenso für die Tonne, du machst kein Boundschecking und scheiterst damit bei Eingabe von Strings mit enthaltenem Leerzeichen.



  • Wutz schrieb:

    Gehe davon aus, dass es mit meiner oder anderer Altvorderen Aussage hier seine Richtigkeit hat, schließlich glaubst du anderen "Empfehlungen" zum Weg beim C-Lernen ja auch blind.
    Gehe davon aus, dass du hier nicht der Erste bist, der mit solchem Uni-Laiengeschwätz aufschlägt. Und nicht jedes Mal wird hier alles auch noch detailliert und anfängergerecht begründet. Sowas wäre nämlich Sache deines Lehrers, aber da traust du dich ja nicht zu fragen, wo der Sinn darin bestehen soll, "zunächst" mal etwas zu lernen von dem schon vorher klar ist, dass es bessere, richtigere und praxisorientiertere Lösungen gibt.
    Glaub mir, dein Lehrer ist nur zu faul/inkompetent, sich gescheite Übungen zu Zeigern auszudenken.

    Dein letzter Versuch ist ebenso für die Tonne, du machst kein Boundschecking und scheiterst damit bei Eingabe von Strings mit enthaltenem Leerzeichen.

    Alter was ist mit dir nicht in Ordnung. Ich lerne das hier im Selbststudium. Ich versuche mich initiativ auf das Studium vorzubereiten, welches ich im September anfange. Ich komme auch hier her um eben Profis zu fragen, oder zumindest zu hoffen, dass mir welche antworten. Ich nehme mir Hinweise und Ratschläge an. Wenn ich etwas nicht verstehe dann frage ich auch, weil ich will es ja verstehen!

    Ich habe auch keine Erwartung hier alles ausführlich erklärt zu bekommen, sondern wenn es jemand macht mir einen Hinweis auf meinen Fehler zu geben, dann ist für mich mein Hauptziel des Forumposts erreicht.

    Ich habe auch nicht an der Richtigkeit deiner Aussage gezweifelt, sondern lediglich hervorgehoben, dass der Ton den du anschlägst absolut kontraproduktiv ist. Ich zwinge dich ja auch nicht mir eine Antwort zu geben.

    Ich habe ganz klare Fragen und Aussagen getroffen. Ich habe gesagt, dass ich im Zuge meines Lernens die linked Lists durchgehe.

    Wenn du schreibst, dass linked Lists prinzipiell "dumm" sind, ist das eine absolut inhaltslose Aussage. Ich verstehe deshalb nicht was ich in meinem Beispiel falsch gemacht habe, und ebenso wenig verstehe ich warum sie denn "dumm" seien, und es ist auch ignorant zu erwarten, dass jemand der gerade damit anfängt, das versteht und diese Lektion aus Ignoranz des Lehrmaterials gegenüber überspringt.

    Ich finde ein Forum ist ein Platz wo Leute zusammenkommen um sich entweder zu helfen oder zu diskutieren. Daher kann ich deine Reaktion hier absolut nicht nachvollziehen.

    Hinzu ist es noch absolut arrogant von dir über mich Mutmaßungen anzustellen. Ich gehe noch nicht zu dem Kurs, ich lerne es eigeninitiativ, und wenn ich etwas nicht verstehe, dann werde ich selbstverständlich den Lehrer/Professor fragen, und wenn sich es begründet als falsch herausstellt, was ich gelernt habe, dann lasse ich mich sehr gerne eines besseren belehren.

    Meine Einstellung ist diesbezüglich einwandfrei!



  • C_Newbe schrieb:

    Meine Einstellung ist diesbezüglich einwandfrei!

    lol
    Naivling.
    Du sprichst von Lehrmaterial, nach dem du dich richtest. Das ist u.a. aus meinen o.g. Gründen dumm.
    Du sprichst davon, Hinweise anzunehmen und zu lernen. Hast du aber nachweislich nicht, du hast weder die Hinweise von SeppJ noch von dachschaden beachtet sondern einfach nur drauflos gehackt und warst zufrieden, dass es compiliert und (in deinen Augen) funktioniert.
    Das ist dumm und naiv.



  • Wutz schrieb:

    C_Newbe schrieb:

    Meine Einstellung ist diesbezüglich einwandfrei!

    lol
    Naivling.
    Du sprichst von Lehrmaterial, nach dem du dich richtest. Das ist u.a. aus meinen o.g. Gründen dumm.
    Du sprichst davon, Hinweise anzunehmen und zu lernen. Hast du aber nachweislich nicht, du hast weder die Hinweise von SeppJ noch von dachschaden beachtet sondern einfach nur drauflos gehackt und warst zufrieden, dass es compiliert und (in deinen Augen) funktioniert.
    Das ist dumm und naiv.

    Der größere Fehler ist über meine Person Mutmaßungen zu machen. Hier geht es ja immerhin um die Sache. Und wenn mein Vorschlag fehlerhaft ist, dann kannst du das auch einfach mal sachlich auslegen und darauf hinweisen, statt dich darüber lustig zu machen, dass es trotzdem falsch sei.

    Ich hole meine Informationen natürlich nicht nur hier ein, sondern besuche auch weitere Seiten, und dort kam die Lösung einfach etwas schneller, und vor allem nicht mit einem derart unprofessionellen Unterton. (Den Unterton lege ich gerade nur Wutz zu Lasten)

    http://stackoverflow.com/questions/37757330/string-input-in-linked-list-c

    Whitespace wird von scanf ignoriert und alles was bis dahin eingegeben wurde eingelesen. Daher wäre mein Problem was ich eingangs hatte gelöst. Falls daran etwas falsch oder gefährlich ist, wäre es nett wenn du es einfach nur sagst, was daran falsch oder gefährlich sei.

    Ich habe aber verstanden, dass ich den whitespace im Prinzip über die vorgeschlagenen Vorgänge aus dem Char filtern muss, wenn ich das über fgets() machen möchte.

    scanf:
    Whitespace character: the function will read and ignore any whitespace characters encountered before the next non-whitespace character (whitespace characters include spaces, newline and tab characters -- see isspace). A single whitespace in the format string validates any quantity of whitespace characters extracted from the stream (including none).

    Quelle: http://www.cplusplus.com/reference/cstdio/scanf/

    Falls hier irgendwas falsch ist, dann sei doch lieber konstruktiv, statt dich wie ein Troll hier aufzuführen.



  • Im Übrigen habe ich diese Videos fast alle durchgearbeitet und auch die Kursarbeiten gemacht.

    https://www.youtube.com/watch?v=hE7l6Adoiiw&index=1&list=PL6B940F08B9773B9F

    Zusätzlich habe ich den Online Kurs von dem Professor gemacht.

    https://www.openlearning.com/courses/unsw/computing1

    Und ich informiere mich in verschiedenen Foren, unter anderem diesem hier. Letzte Nacht habe ich mich jetzt auch bei Stackoverflow angemeldet, und das Konzept der Community dort, ist sehr hilfreich beim Lernen.

    Daher ist es kein Grund hier polemisch zu werden.

    Außerdem, wonach soll ich mich bitte überhaupt richten? Ohne das Lehrmaterial würde ich keinen Einstieg wirklich zu Stande bekommen.

    👎 👎 👎 👎 👎


  • Mod

    C_Newbe schrieb:

    Außerdem, wonach soll ich mich bitte überhaupt richten? Ohne das Lehrmaterial würde ich keinen Einstieg wirklich zu Stande bekommen.

    Es gibt im Bereich C leider sehr viel sehr schlechtes Lehrmaterial. Gerade Onlinekurse, aber auch gewisse Autoren (z.B. J. Wolf) und ganze Verlage (z.B. Galileo) fluten den Markt mit Müll. Und leider auch viele Uniprofessoren. Wie man als Nichtkönner erkennt, ob man Müll lernt, ist natürlich schwer. Ein Zeichen ist natürlich, wenn die eigenen Programme nicht funktionieren, so wie hier. Und wenn einem andere Leute sagen, dass man Müll gelernt hat, wobei da natürlich die Frage ist, wieso man deren Autorität mehr glauben sollte, als dem Lehrer. Ein Zeichen dafür ist, wenn deren Verbesserungsvorschläge funktionieren. Beispielsweise hätte mein scanf-Vorschlag tatsächlich funktioniert, wenn du es denn ausprobiert hättest (schade, dass du es anscheinend nicht hast). Und ich kann dir dann wiederum weitersagen, dass sich Wutz, trotz seiner mangelnden Höflichkeit, ziemlich gut auskennt.



  • SeppJ schrieb:

    C_Newbe schrieb:

    Außerdem, wonach soll ich mich bitte überhaupt richten? Ohne das Lehrmaterial würde ich keinen Einstieg wirklich zu Stande bekommen.

    Es gibt im Bereich C leider sehr viel sehr schlechtes Lehrmaterial. Gerade Onlinekurse, aber auch gewisse Autoren (z.B. J. Wolf) und ganze Verlage (z.B. Galileo) fluten den Markt mit Müll. Und leider auch viele Uniprofessoren. Wie man als Nichtkönner erkennt, ob man Müll lernt, ist natürlich schwer. Ein Zeichen ist natürlich, wenn die eigenen Programme nicht funktionieren, so wie hier. Und wenn einem andere Leute sagen, dass man Müll gelernt hat, wobei da natürlich die Frage ist, wieso man deren Autorität mehr glauben sollte, als dem Lehrer. Ein Zeichen dafür ist, wenn deren Verbesserungsvorschläge funktionieren. Beispielsweise hätte mein scanf-Vorschlag tatsächlich funktioniert, wenn du es denn ausprobiert hättest (schade, dass du es anscheinend nicht hast). Und ich kann dir dann wiederum weitersagen, dass sich Wutz, trotz seiner mangelnden Höflichkeit, ziemlich gut auskennt.

    Das Lehrmaterial was ich sehe, beschränkt sich leider nur auf die Grundmechanismen und auf sehr spezielle Fälle. Es wird auch in den Vorlesungen, die ich sehe, darauf hingewiesen, dass vieles falsch laufen kann, und dass Fehler passieren können. Daher wird auch darauf hingewiesen, sich im günstigsten Falle in einer Community über Erfahrungen auszutauschen, sodass man unbekannte Fehler eben so lernen kann. Das mache ich, in dem ich in einen öffentlichen Dialog trete.

    Das mit dem fgets habe ich letztlich nur aufgeschoben. Mir ging es nur darum prinzipiell diese Linked List erstmal zum Laufen zu bekommen.

    Ich will als nächstes Files implementieren, daher werde ich unweigerlich darüber nochmal laufen und mir bereits alle gesammelten Ratschläge dazu ansehen.

    Ich kann leider nicht so viele Erkenntnisse gleichzeitig umsetzen, da es sonst für mich sehr unübersichtlich wird. Wenn der Code für mich nicht mehr verständlich ist, kann ich es nur spärlich lernen.

    Ich habe eure Hinweise alle zur Kenntnis genommen.

    Außerdem zweifle ich Wutz Kompetenz selbst nicht an, nur vermittelt er mit seinen Aussagen keine Kompetenz, sondern nur Arroganz.

    Ich sammle gerade Informationen zum Erstellen von Dateien, Einlesen, Schreiben und Hinzufügen von Strings. Wenn ihr direkt eine gute Quelle dazu habt, würde ich mich natürlich sehr freuen, ansonsten muss ich mich mit Geduld durchs Internet forsten, bis ich sicher bin, etwas wertiges gefunden zu haben.

    Und als Nachtrag würde mich noch interessieren, ob das scanf prinzipiell falsch oder gefährlich ist. Wenn ich den String in seiner maximalen Weite definiere, sollte doch die Sache sauber sein (von dem was ich bisher gelernt habe).

    Das fgets werde ich heute Abend oder morgen dann wieder zum Einsatz bringen, wenn ich FILE aufgearbeitet habe. Da macht es auch mehr Sinn erstmal, weil fgets im Prinzip doch "file get string" heißt und zum Bereich files gehört, oder?



  • @Topic:

    C_Newbe schrieb:

    Wenn du schreibst, dass linked Lists prinzipiell "dumm" sind, ist das eine absolut inhaltslose Aussage. Ich verstehe deshalb nicht was ich in meinem Beispiel falsch gemacht habe, und ebenso wenig verstehe ich warum sie denn "dumm" seien, und es ist auch ignorant zu erwarten, dass jemand der gerade damit anfängt, das versteht und diese Lektion aus Ignoranz des Lehrmaterials gegenüber überspringt

    LLs sind dann gut, wenn du oft Elemente rein- und raus-nehmen musst.

    Gab mal eine Zeit, in der ich sehr von ihnen überzeugt war, und in Allokatorencode ( malloc ) werden sich auch häufig verwendet.

    Aber heutzutage frage ich mich halt, ob bestimmte Verschiebe-Algorithmen nicht besser gewesen wären. Auf den Code von damals habe ich allerdings keinen Zugriff mehr, und derzeit ist mir meine Zeit zu schade, um das Problem nachzustellen. Aber damals in einem Codebereich auf LLs zu wechseln hat 1500%-Laufzeitgewinn gebracht.

    Aber eines solltest du dir merken: der Compiler kann wegen Aliasing (1, 2) Speicherzugriffe auf verkettete Listen nicht optimieren (es sei denn, du verwendest restrict ed Pointers - und dann musst du aufpassen, dass sich Objekte nicht überlappen, sonst darf der Compiler machen, was er will).

    wikipedia schrieb:

    Aliasing introduces strong constraints on program execution order. If two write accesses that alias occur in sequence in a program text, they must occur in sequence in the final machine code. Re-ordering the accesses will produce an incorrect program result (in the general case). The same is true for a write access and a read access.

    However, if two read accesses that alias occur in sequence in a program text, they need not occur in the same sequence in the machine code - aliasing read accesses are safe to re-order. This is because the underlying data is not changed by the read operation, so the same value is always read.

    It is vitally important that a compiler can detect which accesses may alias each other, so that re-ordering optimizations can be performed correctly.



  • dachschaden schrieb:

    @Topic:
    LLs sind dann gut, wenn du oft Elemente rein- und raus-nehmen musst.

    Gab mal eine Zeit, in der ich sehr von ihnen überzeugt war, und in Allokatorencode ( malloc ) werden sich auch häufig verwendet.

    Aber heutzutage frage ich mich halt, ob bestimmte Verschiebe-Algorithmen nicht besser gewesen wären. Auf den Code von damals habe ich allerdings keinen Zugriff mehr, und derzeit ist mir meine Zeit zu schade, um das Problem nachzustellen. Aber damals in einem Codebereich auf LLs zu wechseln hat 1500%-Laufzeitgewinn gebracht.

    Aber eines solltest du dir merken: der Compiler kann wegen Aliasing (1, 2) Speicherzugriffe auf verkettete Listen nicht optimieren (es sei denn, du verwendest restrict ed Pointers - und dann musst du aufpassen, dass sich Objekte nicht überlappen, sonst darf der Compiler machen, was er will).

    Danke für die Erklärung, ab dem dritten Absatz fällt es mir gerade schwer, das richtig zu verstehen (ich kann es mir aber grob vorstellen, was du meinst).

    Ich muss sowieso noch viele basics lernen, bevor ich über Optimierung überhaupt erst nachdenken darf. Beispielsweise habe ich mir auch noch nicht die Sortieralgorithmen angesehen. Das wird das nächste Gebiet sein, sobald ich mit den files erstmal im Grundrahmen durch bin.

    Ja es wurde auch immer in den Beispielen mit Produktdatenbanken verwendet, und genauso wurden auch die Vorteile einer LL definiert (es konnte bisher nur mit Arrays verglichen werden, mehr kenne ich noch nicht).

    Daher weiß ich nur, wenn ich etwas hinzufügen oder löschen will, was mitten in der Liste ist, ist die LL zur Zeit das Mittel der Wahl, bis ich was besseres vielleicht kennen lerne.


Anmelden zum Antworten