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

stroumpf Messages postés 292 Statut Membre -  
stroumpf Messages postés 292 Statut Membre -
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. kazouu Messages postés 466 Statut Membre 12
     
    link le format de ta table et ta fonction supprimer
    0
  2. Utilisateur anonyme
     
    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. stroumpf Messages postés 292 Statut Membre 2
       
      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