Neue Antwort schreiben 
 
Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
[C] Liste von Paaren durchsuchen?
gandro Offline
Quälgeist

Beiträge: 8.951
Registriert seit: Jul 2008
Beitrag #1
[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?
02.03.2010 18:46
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
friedrichheinze Offline
...und Kondensatoren.

Beiträge: 2.840
Registriert seit: Jul 2008
Beitrag #2
[C] Liste von Paaren durchsuchen?
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.
02.03.2010 18:54
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
CooperRS Offline
Benutzer

Beiträge: 83
Registriert seit: Dec 2008
Beitrag #3
[C] Liste von Paaren durchsuchen?
hmm wenns jetzt nit auf C beschränkt wär würd ich logische/funktionale Programmierung sagen...
02.03.2010 18:58
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
gandro Offline
Quälgeist

Beiträge: 8.951
Registriert seit: Jul 2008
Beitrag #4
[C] Liste von Paaren durchsuchen?
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.
02.03.2010 19:04
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
pETe! Offline
*

Beiträge: 920
Registriert seit: Jul 2008
Beitrag #5
[C] Liste von Paaren durchsuchen?
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.
03.03.2010 08:49
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
gandro Offline
Quälgeist

Beiträge: 8.951
Registriert seit: Jul 2008
Beitrag #6
[C] Liste von Paaren durchsuchen?
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.
03.03.2010 09:27
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Neue Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste