Lineare Liste rekusiv füllen --> Seiteneffekte?



  • sorry schon geschnallt.....
    🙄



  • Doch nicht.... 😕

    Kannst Du mir diese Zeile nochmal genauer erklären?

    return addValueToList((bigList->lists)[unsigned char(*p_value)],p_value);
    


  • Du rufst die Funktion "addValueToList()" für die i-te Liste in deiner BigList und den einzutagenden Wert auf:

    bigList - Pointer auf BigList-Objekt
    bigList->lists - das List-Array in bigList
    (bigList->lists)[i] - das i-te Element in diesem List-Array
      (mit i=erstes Zeichen des einzutragenden Strings)
    


  • aber warum die Klammern um bigList->lists ???



  • die klammern kannst du dir auch sparen. die machen an der speziellen stelle keinen unterschied.



  • paddy@work schrieb:

    aber warum die Klammern um bigList->lists ???

    Die Antwort liegt in der Rangfolge der Operatoren 😉 (wobei es hier keine Probleme geben sollte, wie c.rackwitz schon angemerkt hat)



  • Danke,

    dann werde ich mir wohl die Arbeit machen....

    Der Quelltext vorher sah echt schlimm aus 🙄



  • paddy@work schrieb:

    Danke,
    dann werde ich mir wohl die Arbeit machen....
    Der Quelltext vorher sah echt schlimm aus 🙄

    vielleicht sollten wir erst drüber reden.
    du willst eine million datensätze in einfach verketteten listen einfügen und suchen? bieten sich da nicht hash tables oder bäume an?



  • bei

    return addValueToList(&bigList->lists[unsigned char(*p_value)],p_value);
    

    sind viele listen völlig leer.
    vielleicht magste lieber

    return addValueToList(&bigList->lists[unsigned char(*p_value)%16],p_value);
    

    aber das führt uns eh sofort zu hashtables, also für 1 mio datensätze auch ca 1 mio verkettete listen und man berechnet vorher anhand aller buchstaben im string, wo er landen soll.



  • Es geht nicht um Millionen.

    Es sind "lediglich" maximal 100.000 .
    Wenn man die Windows.h (inklusive aller anderen in ihr enthaltenen Includes) parst findet er 14092 Makros bzw. Defines.

    Wenn dann noch eigene dazukommen, ist man maximal bei 100000

    Ich habe die Liste fertig und sie ist schnell genug...

    In der Liste werden die Makro's ihrem namen nach alphabetisch sortiert hinzugefügt. es reicht also vollkommen aus, wenn man 53 Listen nimmt.

    a-zA-Z und _

    Diese lineare Verteilung kommt auch in etwa hin.

    Gruß Paddy


Anmelden zum Antworten