int main () { int i; char *chaines[] = {"chaine1", "chaine2", "chaine3", "chaine4", "chaine5", "chaine6", "chaine7", "chaine8", "chaine9", "chaine10"}, *elementc; int vecteur[] = {1,2,3,4,5,6,7,8,9,10}, *elementi; Liste * liste1 = NULL; /* liste 1 est vide */ Liste * liste2 = NULL; /* liste 2 est vide */ /* Creation des listes */ for (i=NB; i>0; i--){ liste1 = insere_liste(liste1, chaines[i-1]); liste2 = insere_liste(liste2, &vecteur[i-1]); } affiche_liste(liste1, (void (*) (void *, char *)) affiche_char); affiche_liste(liste2, (void (*) (void *, char *)) affiche_int); /* Retrait des 5 premiers nombres */ for (i=0; i<5; i++) { liste1 = retire_liste(liste1, (void *) &elementc); liste2 = retire_liste(liste2, (void *) &elementi); printf("Element %d retire de la liste d'entiers\n", *elementi); printf("Element %s retire de la liste de chaines\n", elementc); } affiche_liste(liste1, (void (*) (void *, char *)) affiche_char); affiche_liste(liste2, (void (*) (void *, char *)) affiche_int); return 0; }
int main(void) { ListeChainee maliste = LISTE_VIDE; type_el un_element = 3; printf("J'insere (en tete) "); affiche_el(un_element); putchar('\n'); insere_entete(&maliste, un_element); printf("J'insere (en tete) 2, puis 1, 0 et -1.\n"); insere_entete(&maliste, 2); insere_entete(&maliste, 1); insere_entete(&maliste, 0); insere_entete(&maliste, -1); printf("Voici la liste : \n\t"); affiche_liste(maliste); putchar('\n'); printf("Je supprime la tete de liste.\n"); supprime_tete(&maliste); printf("Voici la liste : \n\t"); affiche_liste(maliste); putchar('\n'); printf("Je supprime le 4e element.\n"); supprime_suivant(maliste->suite->suite); printf("Voici la liste : \n\t"); affiche_liste(maliste); putchar('\n'); printf("J'insere 156 en 3e position.\n"); insere_apres(maliste->suite, 156); printf("Voici la liste : \n\t"); affiche_liste(maliste); putchar('\n'); printf("de taille %u.\n", taille(maliste)); return 0; }
void afficher_bordure(S_Zsg *zone) { int i; for(i= 0; i < zone->dim;i++){ if (zone->B[i] != NULL) { printf("bordure de la couleur %d :",i); affiche_liste(&(zone->B[i])); } } }
void affiche_graphe(GRAPH_L_ADJ graph) { int i; for (i = 0; i < graph.nbSom; i++) { if (graph.succTab[i]) { printf("Successeurs de %d : ", i); affiche_liste(graph.succTab[i]); } } printf("\n"); }
int sequence_aleatoire_imp(int **M, Grille *G, int dim, int aff){ /* initialisation du tableau de couleurs dans la grille */ int *tab = initialise_tab_couleur(G->nbcl); nb_couleur_initiales(&tab,M,G->dim); int nbCoups = 0; srand(time(NULL)); /* On definit Zsg, la zone contenant la case situee en haut a gauche */ Liste L; init_liste(&L); int taille = 0; int new_couleur; int couleur = M[0][0]; int nbcl = cpt_couleur(tab,G->nbcl); trouve_zone_imp(M, dim, 0, 0, &taille, &L); printf("Couleur initiale : %d \n",couleur); /* selectionne une couleur tant que la grille contient plus d'une couleur */ do{ do{ new_couleur = (int)(rand()%(G->nbcl)); } while(tab[new_couleur] == 0); /* si la couleur selectionnee est differente de la couleur de Zsg */ if(new_couleur != couleur){ tab[couleur] -= taille; couleur = new_couleur; tab[couleur] += taille; peint(G,couleur,M,&L); /* on peint toute les cases avec la nouvelle couleur, puis on effectue une nouvelle recherche afin de voir si notre zone possede de nouvelles cases */ detruit_liste(&L); taille = 0; trouve_zone_imp(M,dim,0,0,&taille,&L); peint(G,couleur,M,&L); nbcl = cpt_couleur(tab,G->nbcl); nbCoups++; if(aff == 1){ //Grille_attente_touche(); Grille_redessine_Grille(); } if(aff == 2){ affiche_liste(&L); Grille_attente_touche(); Grille_redessine_Grille(); } } }while(nbcl > 1); printf("Couleur finale : %d\n", couleur); // printf("nbCoups = %d\n", nbCoups); return nbCoups; }
int main () { int i, element; Liste * liste1 = NULL; /* liste 1 est vide */ /* Creation d'une liste */ for (i=NB; i>0; i--) { liste1 = insere_liste(liste1, i); } affiche_liste(liste1); /* Retrait des 5 premiers elements */ for (i=0; i<5; i++) { liste1 = retire_liste(liste1, &element); printf("Element %d retire\n", element); } affiche_liste(liste1); return 0; }
main (int argc, char *argv[]) { int i; int vecteur[] = {1,2,3,4,5,6,7,8,9,10}; int *elementi; p_liste liste1 = NULL, liste2 = NULL; /* Creation des listes */ for (i=NB; i>0; i--) liste1 = insere_liste(liste1, &vecteur[i-1]); for (i=0; i<NB; i++) liste2 = insere_liste(liste2, &vecteur[i]); affiche_liste(liste1, (void (*) (void *, char *)) affiche_int); affiche_liste(liste2, (void (*) (void *, char *)) affiche_int); /* Retrait des 5 premiers nombres */ for (i=0; i<5; i++) { liste1 = retire_liste(liste1, elementi); liste2 = retire_liste(liste2, elementi); } affiche_liste(liste1, (void (*) (void *, char *)) affiche_int); affiche_liste(liste2, (void (*) (void *, char *)) affiche_int); liste1 = concatene_listes(liste1, liste2); affiche_liste(liste1, (void (*) (void *, char *)) affiche_int); affiche_liste(liste2, (void (*) (void *, char *)) affiche_int); }
int sequence_aleatoire_rapide(int **M, Grille *G, int aff) { /* initialisation de Zsg */ Liste Lzsg; init_liste(&Lzsg); Liste *B = (Liste*)malloc((G->nbcl)*sizeof(Liste)); int **App = (int**)malloc((G->dim)*sizeof(int*)); int i, j; int k = 0; int l = 0; for (i = 0; i < G->dim; i++){ App[i] = malloc((G->dim)*sizeof(int)); } for(i = 0; i < G->dim; i++){ for(j = 0; j < G->dim; j++) App[i][j] = -2; } for (i = 0; i < G->nbcl; i++) init_liste(&B[i]); S_Zsg zone = init_zsg(G->dim, G->nbcl, Lzsg, B, App); int couleur = M[0][0]; printf("couleur initiale : %d\n", couleur); int *tab = initialise_tab_couleur(G->nbcl); nb_couleur_initiales(&tab,M,G->dim); int new_couleur; int nbCoups = 0; int nbcl = G->nbcl; int taille; taille = agrandit_zsg(M, &zone, couleur, 0, 0); if(aff == 1){ //Grille_attente_touche(); Grille_redessine_Grille(); } if(aff == 2){ affiche_liste(&(zone.Lzsg)); Grille_attente_touche(); Grille_redessine_Grille(); } Elnt_liste *actu; do{ plus_grd_cl(zone,G,&k,&l); couleur = M[k][l]; actu = B[couleur]; tab[M[0][0]] -= taille; tab[couleur] += taille; while(actu != NULL){ taille += agrandit_zsg(M,&zone,couleur,actu->i,actu->j); actu = actu->suiv; } detruit_liste(&(zone.B[couleur])); peint(G,couleur,M,&(zone.Lzsg)); nbcl = cpt_couleur(tab,G->nbcl); nbCoups++; if(aff == 1){ //Grille_attente_touche(); Grille_redessine_Grille(); } if(aff == 2){ affiche_liste(&(zone.Lzsg)); Grille_attente_touche(); Grille_redessine_Grille(); } }while(nbcl > 1); printf("Couleur finale : %d\n", couleur); //printf("nbCoups = %d\n", nbCoups); return nbCoups; }
int main() { int choix, result; task * list1, * list2, * tache; do { printf("\n********** Menu **********\n\n" "0 - Quitter.\n" "1 - Fonction cree_tache.\n" "2 - Fonction cree_liste.\n" "3 - Fonction affiche_liste.\n" "4 - Fonction ajoute_tache.\n" "5 - Fonction annule_tache.\n" "6 - Fonction execute_tache_FIFO.\n" "7 - Fonction depile_tache.\n" "8 - Fonction execute_tache_LIFO.\n" "9 - Fonction load_data.\n" "10 - Fonction load_data2.\n" "11 - Fonction insere_tache.\n" "12 - Fonction insere_tache_priorite.\n" "13 - Fonction fusion_listes.\n" "14 - Fonction MAJ_priorite.\n\n" "Choix : "); scanf("%d", &choix); switch(choix) { /* Quitter. */ case 0 : printf("\n\nfin\n\n"); break; /* Fonction cree_tache. */ case 1 : printf("Test fonction cree_tache:\n"); printf("Cas 1 : valeurs courantes\n"); tache = cree_tache("aa",1); affiche_liste(tache); printf("Cas 2 : id vide\n"); tache = cree_tache("",5); affiche_liste(tache); printf("Cas 2 bis : duree negative\n"); tache = cree_tache("rr",-6); affiche_liste(tache); printf("Cas 3 : id = NULL\n" "Impossible de créer une tache sans identifiant.\n"); break; /* Fonction cree_liste. */ case 2 : printf("Test fonction cree_liste:\n"); printf("Cas 1 : tache classique\n"); tache = cree_tache("gf",30); list1 = cree_liste(tache); affiche_liste(list1); printf("Cas 2 : Tache vide\n"); list1 = cree_liste(NULL); affiche_liste(list1); printf("Cas 3 : valeur aberrante pour la tache\n"); list1 = cree_liste("ab"); affiche_liste(list1); break; /* Fonction affiche_liste. */ case 3 : printf("Test fonction affiche_liste:\n"); printf("Cas 1 : valeurs courantes\n"); tache = cree_tache("ab",10); list1 = cree_liste(tache); affiche_liste(list1); printf("Cas 2 : liste avec une tache null\n"); tache = NULL; list1 = creer_liste(tache); affiche_liste(list1); printf("Cas 3 : liste null\n"); list1 = NULL; affiche_liste(list1); break; /* Fonction ajoute_tache. */ case 4 : printf("Test fonction ajoute_tache:\n"); printf("Cas 1 : ajout classique d'une tache a une liste\n"); tache = cree_tache("ab",10); list1 = cree_liste(tache); tache = cree_tache("cd",20); result = ajoute_tache(list1, tache); printf("resultat : %d \n",result); printf("Cas 2 : liste null \n"); result = ajoute_tache(NULL,tache); printf("resultat : %d \n",result); printf("Cas 3 : tache null \n"); result = ajoute_tache(list1,NULL); printf("resultat : %d \n",result); printf("cas 4 : valeur aberrante pour la tache\n"); result = ajoute_tache(list1,"cd"); printf("resultat : %d \n",result); break; /* Fonction annule_tache. */ case 5 : printf("Test fonction annule_tache:\n"); printf("Cas 1 : valeurs courantes\n"); list1 = cree_liste(cree_tache("aa",2)); list1 = ajoute_tache(list1, cree_tache("bb",5)); list1 = annule_tache(list1, "bb"); affiche_liste(list1); printf("Cas 2 : tache non comprise dans la liste\n"); list1 = cree_liste(cree_tache("aa",2)); list1 = ajoute_tache(list1, cree_tache("bb",5)); list1 = annule_tache(list1, "ff"); affiche_liste(list1); printf("Cas 3 : liste NULL\n"); list1 = NULL; list1 = annule_tache(list1, "ff"); affiche_liste(list1); break; /* Fonction execute_tache_FIFO. */ case 6 : printf("Test fonction execute_tache_FIFO:\n"); printf("Cas 1 : normal \n"); list1 = cree_liste(cree_tache("aa" 10)); list1 = ajoute_tache(list1, cree_tache("bb", 2)); list1 = ajoute_tache(list1, cree_tache("cc", 65)); list1 = execute_tache_FIFO(list1); affiche_liste(list1); printf("Cas 2 : La liste est vide\n"); list1 = NULL; list1 = execute_tache_FIFO(NULL); affiche_liste(list1); break; /* Fonction depile_tache. */ case 7 : printf("Test fonction depil_tache:\n"); printf("Cas 1 : liste non vide\n"); list1 = cree_liste(cree_tache("aa" 10)); list1 = ajoute_tache(list1, cree_tache("bb", 2)); list1 = depile_tache(list1); affiche_liste(list1); printf("Cas 1 bis : liste à une tache\n"); list1 = cree_liste(cree_tache("aa" 10)); list1 = depile_tache(list1); affiche_liste(list1); printf("Cas 2 : liste vide\n"); list1 = cree_liste(NULL); list1 = depile_tache(list1); affiche_liste(list1); break; /* Fonction execute_tache_LIFO. */ case 8 : printf("Test fonction execute_tache_LIFO:\n"); printf("Cas 1 : normal \n"); list1 = cree_liste(cree_tache("aa" 10)); list1 = ajoute_tache(list1, cree_tache("bb", 2)); list1 = ajoute_tache(list1, cree_tache("cc", 65)); list1 = execute_tache_LIFO(list1); affiche_liste(list1); printf("Cas 2 : La liste est vide\n"); list1 = NULL; list1 = execute_tache_LIFO(NULL); affiche_liste(list1); break; /* Fonction load_data. */ case 9 : printf("Test fonction load_data:\n"); printf("Cas 1 : nom de fichier correct\n"); list1 = load_data("tasks.dat"); affiche_liste(list1); printf("Cas 2 : nom de fichier sans extension\n"); list1 = load_data("tasks"); affiche_liste(list1); printf("Cas 3 : Fichier null \n"); list1 = load_data(NULL); affiche_liste(list1); printf("Cas 4 : valeur aberrante du nom de fichier\n" "la fonction s'interrompt lors de son exécution.\n"); break; /* Fonction load_data2. */ case 10 : printf("Test fonction load_data2:\n"); printf("Cas 1 : nom de fichier correct\n"); list1 = load_data2("tasks.dat"); affiche_liste(list1); printf("Cas 2 : nom de fichier sans extension\n"); list1 = load_data2("tasks"); affiche_liste(list1); printf("Cas 3 : Fichier null \n"); list1 = load_data2(NULL); affiche_liste(list1); printf("Cas 4 : valeur aberrante du nom de fichier\n" "la fonction s'interrompt lors de son exécution.\n"); break; /* Fonction insere_tache. */ case 11 : printf("Test fonction insere_tache:\n"); printf("Cas 1 : liste et tache classique\n"); tache = cree_tache("de",30); list1 = cree_tache("ab", 10); list1 = cree_liste(list1); list1 = insere_tache(list1, tache); tache = cree_tache("ab", 50); list1 = insere_tache(list_tache, t2); affiche_list1(list1); printf("Cas 2 : liste vide\n" "Arret de la fonction.\n"); printf("Cas 2 bis : tache vide\n" "Arret de la fonction.\n"); printf("Cas 3 : valeur aberrante\n" "Arret de la fonction.\n"); break; /* Fonction insere_tache_priorite. */ case 12 : printf("Test fonction insere_tache_priorite:\n"); printf("Cas 1 : valeurs courantes\n"); list1 = cree_liste(cree_tache("yy", 18)); list1 = insere_tache_priorite(list1, cree_tache("xx", 7)); list1 = insere_tache_priorite(list1, cree_tache("rr", 1)); affiche_liste(list1); printf("Cas 2 : liste null\n"); list1 = NULL; list1 = insere_tache_priorite(list1, cree_tache("vv", 76)); affiche_liste(list1); printf("Cas 2 bis : tache null\n"); list1 = cree_liste(cree_tache("gg", 8)); list1 = insere_tache_priorite(list1, NULL); affiche_liste(list1); printf("Cas 3 : liste null et tache null\n"); list1 = NULL; list1 = insere_tache_priorite(list1, NULL); affiche_liste(list1); break; /* Fonction fusion_listes. */ case 13 : printf("Test fonction fusion_listes:\n"); printf("Cas 1 : 2 listes classiques\n"); tache = cree_tache("ab", 10); list1 = cree_liste(tache); list1 = insere_tache(list1, cree_tache("aa", 4)); list1 = insere_tache(list1, cree_tache("zz", 1)); printf("\nListe 1 :\n"); affiche_liste(list1); tache = cree_tache("ee", 7); list2 = cree_liste(tache); list2 = insere_tache(list2, cree_tache("rr", 25)); list2 = insere_tache(list2, cree_tache("tt", 8)); printf("\nListe 2 :\n"); affiche_liste(l2); list1 = fusion_listes(list1, list2); printf("\nListe fusionnée:\n"); affiche_liste(list1); printf("Cas 2 : l'un des 2 liste est vide\n"); list1 = cree_liste(cree_tache("yy", 18)); list1 = insere_tache(list1, cree_tache("uu", 6)); list1 = insere_tache(list1, cree_tache("ii", 12)); affiche_liste(list1); list1 = fusion_listes(NULL,list1); affiche_liste(list1); printf("Cas 3 : deux listes vides\n"); list1 = fusion_listes(NULL,NULL); affiche_liste(list1); break; /* Fonction MAJ_priorite. */ case 14 : printf("Test fonction MAJ_priorite:\n"); printf("Cas 1 : liste non vide\n"); list1 = cree_liste(cree_tache("yy", 18)); list1 = insere_tache(list1, cree_tache("uu", 6)); list1 = insere_tache(list1, cree_tache("ii", 12)); result = MAJ_priorite(list1); printf("Resultat : %d\n", result); printf("Cas 2 : liste vide\n"); list1 = NULL; result = MAJ_priorite(list1); printf("Resultat : %d\n", result); break; } } while (choix != 0); return 0; }