Automate* creerAutomate(char* alphabet) { Automate* a = (Automate*)malloc(sizeof(Automate)); if(NULL != a) { /* Allocation de la liste des initiaux */ a->initiaux = creerListe(); if(NULL != a->initiaux) { /* Allocation de la liste des terminaux */ a->terminaux = creerListe(); if(NULL != a->terminaux) { /* Allocation de la liste des états */ a->etats = creerListe(); if(NULL == a->etats) { perror("Erreur lors de la création de la liste des états\n"); a->initiaux = libererListe(a->initiaux); a->terminaux = libererListe(a->terminaux); free(a); a = NULL; } /* Ajout de l'alphabet terminal */ if(alphabet != NULL) a->alphabet = strdup(alphabet); else { a->alphabet = (char*)calloc(TAILLEMAX, sizeof(char)); if(NULL == a->alphabet) { perror("Erreur lors de l'allocation du tableau de l'alphabet\n"); a->initiaux = libererListe(a->initiaux); a->terminaux = libererListe(a->terminaux); a->etats = libererListeComplete(a->etats); free(a); a = NULL; } } } else { perror("Erreur lors de la création de la liste des états terminaux\n"); a->initiaux = libererListe(a->initiaux); free(a); a = NULL; } } else { perror("Erreur lors de la création de la liste des états initiaux\n"); free(a); a = NULL; } } else perror("Erreur lors de l'allocation de l'automate\n"); return a; }
int main(){ liste* l = creerListe(); int a = 1; addElementFirst(&l, &a, sizeof(int)); a++; addElementFirst(&l, &a, sizeof(int)); a++; //addElementLast(l, &a, sizeof(int)); removeLastElement(l); visuListe(l, (void(*)(void *))visuElement); freeListe(&l); return 0; }
int main(){ liste l = creerListe(); remplissageListe(&(l->end)); cell p1 = l->deb, p2 = NULL, p3 = NULL, p4 = NULL, p5 = NULL; element tab[5]; while(p1 !=NULL){ p2 = p1->suiv; tab[0] = p1->el; while(p2!=NULL){ if(isPerm(p1->el, p2->el)){ tab[1] = p2->el; p3 = p2->suiv; while(p3!=NULL){ if(isPermTab(p3->el, tab, 2)){ tab[2] = p3->el; p4 = p3->suiv; while(p4!=NULL){ if(isPermTab(p4->el, tab, 3)){ tab[3] = p4->el; p5 = p4->suiv; while(p5!=NULL){ if(isPermTab(p5->el, tab, 4)){ printf("%d\n", (p1->el.nbre + p2->el.nbre + p3->el.nbre + p4->el.nbre + p5->el.nbre)); return 0; } p5 = p5->suiv; } } p4 = p4->suiv; } } p3 = p3->suiv; } } p2 = p2->suiv; } p1 = p1->suiv; } return 0; }
Polynome* creerPolynome () { return creerListe (DECROISSANT, NULL, comparerMonome); }
Pile* creerPile(){ return creerListe(); }