[C] Liste von Paaren durchsuchen?

  • Nabend. Hab da ne Programmiererfrage, auf die ggf. jemand eine Antwort weiss.

    Folgendes Problem: Ich habe hier eine Liste von Paaren. Ein Paar besteht jeweils aus einem Index (von 0 bis ~400) und einem String, also sowas:

    Code
    struct table_entry KEY_TABLE[] = {
         /* ... */
        {242, "VENDOR"},
        {243, "ARCHIVE"},
        {244, "PROGRAM"},
        {245, "CHANNEL"},
        {246, "FAVORITES"},
         /* ... */
    };

    Meine Frage ist nun, wie ich diese Liste von Paaren effektiv durchsuchen kann, ohne jeden Eintrag via Illteration (for-Schleife) durchzugehen.


    Um zu einem bestimmten Index den String zu bekommen (bei der Suche nach 245 soll "CHANNEL" zurückkommen) ist kein Problem, da würde ja sogar ein Array reichen.

    Jetzt brauche ich aber zusätlich auch die Möglichkeit, in der Liste nach einem bestimmten String den den dazugehörigen Index zu suchen (also die Suche nach "FAVORITES" soll 246 zurückgeben).

    Jemand eine Idee, wie man sowas tut, ohne gleich zwei Listen anzulegen?

  • Interessant, da habe ich heute auch drüber nachgedacht, und mir ist nichts besseres eingefallen als ein zusätzlicher Array für die sortierten Strings. Da kann man dann ja mit binärer Suche suchen.

  • Naja, die Suche via Index wird im Programm dann eigentlich der signifikat häufigere Fall sein. Suche via String nur beim Programmstart und ggf. bei Debugging.

    Da ist die Frage dann, ob sich das Anlegen und Sortieren nach Strings der zweiten Liste für die binäre Suche überhaupt lohnt (qsort vs. das 400-Elemente-Array für ~10 Abfragen jedes Mal illterieren).

    Nachtrag: Wobei die Liste eh fest einkompiliert wird, da kann ich die auch vor der Compiletime mit nem Script im Quellcode sortieren.

  • Zitat

    Nachtrag: Wobei die Liste eh fest einkompiliert wird, da kann ich die auch vor der Compiletime mit nem Script im Quellcode sortieren.

    Wenns ne Aufgabe vonner Hochschule ist, wird das sicher Probleme geben, ist nämlich bestimmt nicht Ziel der Übung.

  • Nein, ist keine Aufgabe einer Hochschule, da hätt ich dann auch andere Möglichkeiten um Nachzufragen als hier im Forum. Ist für ein eigenes Programm.

    Hab das Problem jetzt aber umgangen, in dem ich die Suche nach einem bestimmten String verzichte. Wenn ich nur den String habe, speichere ich den halt (früher war Idee den Index zu speichern) und vergleiche erst später wenn ich den Index habe, ob es der gesuchte String ist.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!