void inserer(t_valeurMot mot) { /*Insère un élément dans la liste, en préservant l'ordre croissant des valeurs de la liste*/ int valeur, valeur_actuelle; valeur = mot.score; if(liste_vide()) { ajout_droit(mot); } else { en_tete(); valeur_elt(&valeur_actuelle); while(!hors_liste() && valeur_actuelle < valeur) { suivant(); valeur_elt(&valeur_actuelle); } if(hors_liste()) { en_queue(); ajout_droit(mot); } else { ajout_gauche(mot); } } }
void suivant(void) /* Positionne sur l'elt suivant*/ { if(!hors_liste()) { ec = ec->succ; } }
void valeur_elt(t_personne* v) /* Renvoie dans e la veleur de l'elt courant */ { if(!hors_liste()) v->sexe= liste[ec].sexe; strcopy(v->prenom,liste[ec].prenom); }
void modif_elt(t_personne v) /* Affecte v à l'elt courant */ { if(!hors_liste()) liste[ec].sexe=v.sexe; strcopy(liste[ec].prenom,v.prenom); }
void precedent(void) /* Positionne sur l'elt precedent*/ { if(!hors_liste()) { ec = ec->pred; } }
void vider_liste() { if(!liste_vide()){ en_queue();//on commence en fin de liste car on utilise oter_elt() qui se positionne sur le predecesseur /*on enleve les elements un par un jusqu'à ce que la liste soit vide*/ while(!hors_liste()){ oter_elt(); } } }
void oter_elt(void) /* Supprime l'elt courant et positionne sur le precedent */ { int i; if(!hors_liste()) { for(i=ec;i<queue;i++) liste[i]=liste[i+1]; ec--; queue--; } }
int est_present(t_coord v){ t_coord valeur; if(!liste_vide()){ en_tete(); while(!hors_liste()){ valeur_elt(&valeur); if(valeur.x==v.x && valeur.y==v.y) return 1; suivant(); } } return 0; }
void oter_elt(void) { t_element * temp; if(!hors_liste()) { /* Mise à jour des chainages des voisins */ (ec->succ)->pred = ec->pred; (ec->pred)->succ = ec->succ; /* Positionnement sur le prédécesseur */ temp=ec; ec=ec->pred; /* Libération de l'élément courant */ free(temp); } }
void ajout_droit(t_valeurMot m) /* Ajoute v a droite de l'elt courant */ { if(liste_vide()||!hors_liste()) { t_element * nouvel_element = malloc(sizeof(t_element)); nouvel_element->mot = m; nouvel_element->succ = ec->succ; nouvel_element->pred = ec; ec->succ = nouvel_element; (nouvel_element->succ)->pred = nouvel_element; ec = nouvel_element; } }
void ajout_gauche(int e) { t_element * nouv; if(liste_vide() || !hors_liste()) { /* Création du nouvel élément */ nouv = malloc(sizeof(t_element)); /* Initialisation du nouvel élément */ nouv->valeur = e; nouv->succ = ec; nouv->pred = ec->pred; /* Mise à jour des chaînages des voisins */ (ec->pred)->succ = nouv; ec->pred = nouv; /* On se positionne sur le nouvel élément */ ec = nouv; } }
void ajout_droit(t_personne v) /* Ajoute v a droite de l'elt courant */ { int i; if(liste_vide()||!hors_liste()) { for(i=queue;i>ec;i--){ liste[i+1].sexe=liste[i].sexe; strcpy(liste[i+1].prenom,liste[i].prenom); } liste[ec+1].sexe=v.sexe; strcpy(liste[ec+1].prenom,v.prenom); ec++; queue++; } }
void ajout_gauche(t_valeurMot m) /* Ajoute v a gauche de l'elt courant */ { if(liste_vide() || !hors_liste()) { t_element * nouvel_element = malloc(sizeof(t_element)); nouvel_element->mot = m; nouvel_element->pred = ec->pred; nouvel_element->succ = ec; (ec->pred)->succ = nouvel_element; (ec->pred) = nouvel_element; ec = nouvel_element; } }
void ajout_droit(int c, int p) { t_element * nouv; if(liste_vide() || !hors_liste()) { /* Création du nouvel élément */ nouv = malloc(sizeof(t_element)); /* Initialisation du nouvel élément */ nouv->coeff = c; nouv->puiss = p; nouv->pred = ec; nouv->succ = ec->succ; /* Mise à jour des chaînages des voisins */ (ec->succ)->pred = nouv; ec->succ = nouv; /* On se positionne sur le nouvel élément */ ec = nouv; } }
void afficher_liste(void) /* Affiche les valeurs de la liste */ { int elem; if(liste_vide()) printf("La liste est vide\n"); else { printf("\nLa liste contient: "); en_tete(); while(!hors_liste()) { valeur_elt(&elem); printf("%s : %i\n", elem.score, elem.mot); suivant(); } printf("\n"); } }
void supprimer(void) /* Supprime toutes les occurrences d'un entier lu au clavier */ { int valeur; int valeur_actuelle; if(liste_vide()) { printf("La liste est vide\n"); } else { printf("\nEntrez l'entier a supprimer dans la liste : "); scanf("%i", &valeur); en_queue(); while(!hors_liste()) { valeur_elt(&valeur_actuelle); if(valeur_actuelle == valeur) { oter_elt(); } else { precedent(); } } } }
/********************************************//** * \brief Positionne sur l'element suivant. * ***********************************************/ void suivant(void) { if(!hors_liste()) ec = ec->succ; }
/********************************************//** * \brief Renvoi les valeurs comprises dans l'element courant. * * \param mot : Le mot enregistré dans la liste * \param score : Le score enregistré dans la liste * ***********************************************/ void valeur_elt(char * mot,int * score) { if(!hors_liste()) strcpy(mot,ec->word); *score = ec->score; }
void modif_elt(t_valeurMot m) /* Affecte v à l'elt courant */ { if(!hors_liste()) ec = m; }
void valeur_elt(t_valeurMot* m) /* Renvoie dans e la veleur de l'elt courant */ { if(!hors_liste()) *m= ec; }
void valeur_elt(int* c, int* p) { if(!hors_liste()) *c=ec->coeff; *p=ec->puiss; }
void modif_elt(int c, int p) { if(!hors_liste()) ec->coeff=c; ec->puiss=p; }
void precedent(void) { if(!hors_liste()) ec=ec->pred; }
void precedent(void) /* Positionne sur l'elt precedent*/ { if(!hors_liste()) ec--; }
void modif_elt(int v) { if(!hors_liste()) ec->valeur=v; }
void valeur_elt(int* e) { if(!hors_liste()) *e=ec->valeur; }
void suivant(void) /* Positionne sur l'elt suivant*/ { if(!hors_liste()) ec++; }