1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
|
#include<stdio.h>
#include<stdlib.h>
typedef struct distributeur *pointeur;
typedef struct distributeur {
int date;
pointeur next;
}distributeur;
typedef struct {
pointeur premier;
pointeur dernier;
pointeur courant;
}liste;
void initialise(liste *distri) /*fonction qui reinitialise les pointeur*/
{
distri->courant=NULL;
distri->dernier=NULL;
distri->premier=NULL;
}
void ajout_tete(liste *distri,int date)
{
pointeur nv_element = (pointeur)malloc(sizeof(pointeur));
nv_element->date=date;
nv_element->next=distri->premier;
distri->premier=nv_element;
if( distri->dernier==NULL) distri->dernier=nv_element;
}
void retrait_queue(liste *distri)
{ pointeur avantdernier;
if ( distri->premier == NULL ) /*si la liste est vide ne rien faire*/
{
}
else if ( distri->premier==distri->dernier){ /*si au moins une valeur dans la liste*/
distri->courant=distri->premier;
distri->premier=NULL;
distri->dernier=NULL;
free(distri->courant);
}
else {
distri->courant =distri->premier; /*si il y'a plus qu'une valeur*/
while(distri->courant !=NULL )
{
avantdernier = distri->courant;
distri->courant=distri->courant->next;
}
free(distri->courant);
distri->dernier=avantdernier;
avantdernier->next=NULL;
}
}
void afficher(liste *distri)
{
distri->courant=distri->premier;
while(distri->courant != NULL )
{
printf("%d ",distri->courant->date);
distri->courant=distri->courant->next;
}
}
int main()
{
liste tableau[2];/* je cree un tableau de 2 listes chainnees */
initialise(&tableau[0]);
initialise(&tableau[1]);
/*modifications sur tableau[0]*/
ajout_tete(&tableau[0],29);
ajout_tete(&tableau[0],31);
ajout_tete(&tableau[0],59);
ajout_tete(&tableau[0],64);
ajout_tete(&tableau[0],25);
retrait_queue(&tableau[0]);
retrait_queue(&tableau[0]);
retrait_queue(&tableau[0]);
afficher(&tableau[0]);
/*modifications sur tableau[1]*/
ajout_tete(&tableau[1],36);
ajout_tete(&tableau[1],54);
ajout_tete(&tableau[1],69);
ajout_tete(&tableau[1],47);
ajout_tete(&tableau[1],65);
retrait_queue(&tableau[1]);
retrait_queue(&tableau[1]);
retrait_queue(&tableau[1]);
afficher(&tableau[1]);
printf("\n");
system("PAUSE");
return 0;
} |
Partager