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

Fermé
stroumpf Messages postés 289 Date d'inscription mardi 17 juin 2008 Statut Membre Dernière intervention 1 mars 2009 - 10 juil. 2008 à 11:52
stroumpf Messages postés 289 Date d'inscription mardi 17 juin 2008 Statut Membre Dernière intervention 1 mars 2009 - 10 juil. 2008 à 12:23
Bonjour,
je suis bloqueé dans la fonction qui supprime le 1er elemnt d'une table de hachage.
merci
A voir également:

2 réponses

kazouu Messages postés 466 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 24 juillet 2008 12
10 juil. 2008 à 12:02
link le format de ta table et ta fonction supprimer
0
Utilisateur anonyme
10 juil. 2008 à 12:20
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
stroumpf Messages postés 289 Date d'inscription mardi 17 juin 2008 Statut Membre Dernière intervention 1 mars 2009 2
10 juil. 2008 à 12:23
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