2011-12-23 2 views
1

J'essaie d'écrire quelque chose en c qui relie deux tableaux les uns aux autres mais je suis très novice en langage C et je ne veux pas commencer par le mauvais chemin ... Ce dont j'ai besoin est quelque chose comme python dict et je pense à utiliser un struct. Est-ce le chemin à parcourir ou y a-t-il quelque chose qui me manque?quelque chose comme dict en c

Merci;)

+0

Pouvez-vous être plus précis? «Relates deux tableaux» ne signifie rien. Comment pensez-vous utiliser une structure? –

+0

Désolé, je pensais avoir deux tableaux de longueur égale dans ma structure (disons clés et valeurs) et en regardant l'index de la clé que je veux, je connaîtrais l'index de la valeur ... – Psyclops

+1

Si cela vous suffit avoir coût de recherche O (N) alors vous avez une bonne solution. Vous pouvez trier les éléments pour améliorer ceci à O (logN). Vous pouvez trouver qu'il n'y a pas besoin de mettre en œuvre une table de hachage (ce qui est plus efficace, mais beaucoup plus difficile à coder). –

Répondre

3

Regardez ce link. Il est expliqué comment créer une table de hachage dans c.

2

Je pense que vous êtes à la recherche d'un HashTable. Je viens de googled for an example, mais regardez autour de vous, je suis sûr que vous trouverez un exemple de mise en œuvre répondant à vos besoins.

2

Un Python dict et un C sont très différentes bêtes.

Un struct peut être considéré comme un moyen de regrouper des variables connexes, de sorte qu'elles puissent être transmises en une seule unité.

Un dict est un mappage des clés aux valeurs, où l'ensemble des clés n'est généralement pas connu au moment de la compilation. Si vous avez besoin de faire quelque chose de similaire en C, votre meilleur pari est probablement d'utiliser une bibliothèque de structures de données standard. Ceux-ci ont été discutés dans le passé: Are there any open source C libraries with common data structures?

Il existe plusieurs structures de données standard qui peuvent permettre de mapper des clés aux valeurs. Un hash table est un choix par défaut judicieux.

1

Rechercher le tag hastable ou le texte implementation in C ici dans SO et vous trouverez quelques exemples et aussi des problèmes intéressants et des solutions intéressantes à lire.

Questions connexes