[c]supprimer le 1erelemnt d'une table de hac

Bonjour,
je suis bloqueé dans la fonction qui supprime le 1er elemnt d'une table de hachage.
merci
Configuration: Windows Vista
Internet Explorer 7.0

2 réponses

  1. link le format de ta table et ta fonction supprimer
    0
    1. stroumpf c'est bien de poster des sujets et de demander
      de l'aide mais c'est bien aussi de répondre quand on te de-
      mande des choses pour t'aider -_-'
      Flawon
      0
      1. typedef struct c{
        	int pos;
        	int nl;
        	struct c *suivant;
        }Coordonnees;
         
        typedef struct L{
        	char mot[50];
        	Coordonnees *c;
        	struct L *suivant;
        }Liste;
        int main(void)
        {
         
          // Declaration des variables 
         int a;
          FILE *F;              // Descripteur du fichier texte
          char mot[100];        // variable utilisée pour stocker le mot en cours de lecture
          int i;                // variable utilisée lors du parcours de la TableHash
          unsigned int cle,pt;  // variables pour stocker les cles du mot en cours et la clé du caractère '.'
          char *temp;		// variable pour stocker le mot en cours de lecture
          char c;               // ??
          Liste **TableHash;    // tableau de liste
          TableHash = (Liste **) malloc (TAILLEHASH * sizeof(Liste *)); // allocation en memoire du tableau
          for(i=0;i<TAILLEHASH;++i) //  Initialisation des
            TableHash[i] = NULL;    //  pointeurs contenus dans le tableau 
         
          pt=hash_cle(".");     // calcul de la cle equivalent à un point
         
          printf("debut du programme \n----------------------------------\n");  
          F=fopen("C:\\Users\\cyrine\\Desktop\\Nouveau dossier\\text.txt","r");  // ouverture du fichier texte
          if(F!= NULL)      // si le fichier existe
          {
          	  while(fscanf(F,"%s",mot)==1)     // boucle de lecture du fichier
         	  {
        		  temp = (char*)mot;       // recuperation du mot lu 
        	          cle = hash_cle(temp);    // calcul de la cle equivalente
        		  if ( (cle!=pt ) && (!ChercherMotDansTableHash(TableHash,temp))) // si le mot n'est pas un point et qu'il n'est pas deja stocke
        		  	TableHash[cle] = InsertionEnTete(TableHash[cle],temp);    // on l'insere en debut du tableau
        	  }
        	  fclose(F );  // on ferme le descripteur de fichier
        	  F=fopen("C:\\Users\\cyrine\\Desktop\\Nouveau dossier\\text.txt","r");  // on rouvre le descripteur de fichier pour revenir au debut
        	  PosLigne(F,TableHash); // recherche des coordonnées des diferents mots extraits
                  fclose(F );  // on ferme le descripteur de fichier
         
        	  //filtrage 
        	  printf("\nla liste non filtree :\n----------------------------------\n");
        	  AfficherTableHash(TableHash); // affichage de la table NON FILTREE
         
        	  printf("\nla liste filtree (2 occurrences au moins) :\n----------------------------------\n");
        	  FiltreListe(TableHash,2);	// filtrage de la table
        	  AfficherTableHash(TableHash); // affichage de la table FILTREE
         
        	  //géneration des 2seq
        	  Liste *seq=NULL;
        	  Generer2seq(TableHash, 2, &seq);
        	  printf("\nla liste des 2seq :\n----------------------------------\n");
        	  AfficherListe(seq);
        	  //printf("Chercher mot : ");
        	  //scanf("%s",mot);
        	  //if(cle = ChercherMotDansTableHash(TableHash,mot))
        	  //  printf("%s existant dans le conteneur %u\n",mot,hash_cle(mot));
        	  //else
        	  //  printf("%s inexistant dans la table de hash\n");
        	  //scanf("%c",c);
        	  
        	  // elagage des séquence
        	AfficherTableHash(TableHash);
        	 
        	elaguer2seq(seq, TableHash);
        
        
        	  //printf("%i", a);
          }}
        void elaguer2seq(Liste *L, Liste **TableHash)
        {
          Liste *p;
          Liste *q;
          char *mot;
          int i=0;
          int a;
          Liste *maillon_temp; 
          Liste *last;
          printf(" seq : %s\n",L->mot);
        //printf("TableHash : %s\n",TableHash[1]->mot);
        last=TableHash[i];
             for(p=TableHash[i];p!=NULL;p=p->suivant){
         if(TableHash[i] != NULL)
           printf("TableHash : %s\n",TableHash[i]->mot);
                 if  (chercher_mot(TableHash[i]->mot,p->mot)==0)
                 printf("%s","condition vérifiée");
                  TableHash[i]=p->suivant;
                    last=p->suivant;
                   
        
        maillon_temp=TableHash[i]; 
        TableHash[i]=TableHash[i]->suivant ;
        free(maillon_temp); 
          // supprimerMot(p->mot);  
             AfficherTableHash(TableHash);
             printf("TableHash : %s\n",TableHash[i]->mot);
        }
        0