Hachage et pointeurs

Hachage et pointeurs - C++ - Programmation

Marsh Posté le 31-05-2003 à 10:45:16    

 
Voici mon .h

Code :
  1. //Gestion des colisions de maniere chainee
  2. typedef struct ListeptrGpassager
  3. {
  4. ptr_GPassager Passager;
  5. struct ListeptrGpassager* suivant;
  6. }ListeptrGpassager;
  7. typedef ListeptrGpassager* ptr_ListeptrGpassager;
  8. typedef struct TableH
  9. {
  10. ListeptrGpassager* TableauPtr;
  11. int Nelement;
  12. }TableH;
  13. typedef TableH* ptr_TableH;

 
 
Pourquoi ceci ne passe passe t il pas?
 
for(i=0;i<=Nmax;i++)  
 {
  T->TableauPtr[i]=NULL;
 }
 
Comment accede t on alors a la case i ?
 
Merci d'avance

Reply

Marsh Posté le 31-05-2003 à 10:45:16   

Reply

Marsh Posté le 31-05-2003 à 11:22:14    

ben avec la fonction de hash

Reply

Marsh Posté le 31-05-2003 à 11:27:41    

ca m'eclaire pas comme reponse peux tu detailler?

Reply

Marsh Posté le 31-05-2003 à 11:36:49    

Comment t'as initialisé T->TableauPtr ?

Reply

Marsh Posté le 31-05-2003 à 11:37:48    

++Taz a écrit :

ben avec la fonction de hash


Y a quoi à hacher là ?

Reply

Marsh Posté le 31-05-2003 à 11:49:00    

C une putain de galere ce projet de merde !!!
On a quasiement pas eu de cours sur les table de hachage et les AVL et on nous file un projet enorme avec ces deux structures !!comment ils veulent qu'on s'en sorte ....
 
Je commence a craquer moi sur ce projet :)

Reply

Marsh Posté le 31-05-2003 à 12:42:54    

touxe a écrit :

C une putain de galere ce projet de merde !!!
On a quasiement pas eu de cours sur les table de hachage et les AVL et on nous file un projet enorme avec ces deux structures !!comment ils veulent qu'on s'en sorte ....
 


 
lire la doc, peut être ?  :sarcastic:


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
Reply

Marsh Posté le 31-05-2003 à 12:49:48    

g lu de la doc g reussi a implenter toutes mes structures mais g un probleme louche que personne n'arrve a resoudre (cf un autre message un peu plus loins  ds le forum)

Reply

Marsh Posté le 31-05-2003 à 14:44:07    

bah jai mis le code vous voyez bien comment les variables sont declarées , je me demande pkoi ca marche aps c tout
T->TableauPtr c bien un pointeur sur un tableau non auquel on accede (le contenu) comme ca TableauPtr[i] ou *(TableauPtr+i) non?


Message édité par greg95 le 31-05-2003 à 14:45:59
Reply

Marsh Posté le 31-05-2003 à 19:10:26    

non pas du tout

Reply

Marsh Posté le 31-05-2003 à 19:10:26   

Reply

Marsh Posté le 31-05-2003 à 19:12:29    

repond a la question de verdoux, je crois que c'est la que se trouve la solution.

Reply

Marsh Posté le 31-05-2003 à 20:17:25    

c bon je crois que g resolu mon pb :
 

Code :
  1. * Hash CODING*/
  2. //Gestion des colisions de maniere chainee
  3. typedef struct ListeptrGpassager
  4. {
  5. ptr_GPassager Passager;
  6. struct ListeptrGpassager* suivant;
  7. }ListeptrGpassager;
  8. typedef ListeptrGpassager* ptr_ListeptrGpassager;
  9. typedef struct TableH
  10. {
  11. ListeptrGpassager** TableauPtr;
  12. int Nelement;
  13. }TableH;
  14. typedef TableH* ptr_TableH;
  15. #include "hashcoding.h"
  16. #include "avl.h"
  17. //Initialisation de la table de hachage
  18. ptr_TableH InitTable(ptr_TableH T,int Nmax)
  19. {
  20. int i;
  21. T=malloc(sizeof(TableH));
  22. T->Nelement=0;
  23. T->TableauPtr=(ptr_ListeptrGpassager*)malloc(sizeof(ListeptrGpassager*)*Nmax);//on alloue N cases
  24. for(i=0;i<=Nmax;i++)
  25. {
  26.  T->TableauPtr[i]=NULL;
  27. }
  28. return T;
  29. }
  30. //detruire la table de hashage
  31. void DetruireTable(ptr_TableH T)
  32. {
  33. free(T->TableauPtr);
  34. free(T);
  35. }
  36. //fonction de hachage  
  37. int h(char* Cle1,char* Cle2,char* Cle3,int TailleTable)
  38. {
  39. int somme=0,somme2=0,somme3=0;
  40. int i;
  41. for(i=0;i<strlen(Cle1);i++) somme+=Cle1[i];
  42. for(i=0;i<strlen(Cle2);i++) somme2+=Cle2[i];
  43. for(i=0;i<strlen(Cle3);i++) somme3+=Cle3[i];
  44. somme=somme+somme2+somme3;
  45. return somme % TailleTable;
  46. }
  47. //Insertion dans la table avec gestion des colisions de maniere chainee
  48. int InsererTable(ptr_TableH T,ptr_GPassager Gp,int TailleTable)
  49. {
  50. int Cle=h(Gp->NomPassager,Gp->PrenomPassager,Gp->NumeroTelPassager,TailleTable);
  51. printf("CLE:\n",Cle);
  52. if(T->TableauPtr[Cle]==NULL) T->Nelement++;
  53. T->TableauPtr[Cle]=InsererListeptrGpassager(T->TableauPtr[Cle],Gp);
  54. return 0;
  55. }
  56. //Gestion des colisions
  57. ptr_ListeptrGpassager InsererListeptrGpassager(ptr_ListeptrGpassager L,ptr_GPassager Gp)
  58. {
  59. ptr_ListeptrGpassager courant;
  60. courant=malloc(sizeof(ListeptrGpassager));
  61. courant->Passager=Gp;
  62. if(L==NULL)
  63. {
  64.  L=courant;
  65.  courant->suivant=NULL;
  66.  return L;
  67. }
  68. else
  69. {
  70.  courant->suivant=L;
  71.  L=courant;
  72.  return L;
  73. }
  74. }


Message édité par greg95 le 31-05-2003 à 20:18:20
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed