| 12
 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
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 
 | #include<stdio.h>
#include <stdlib.h>
 
typedef struct element {
    int pri ;
    char val ;
    struct element *suiv ;
} filed ;
 
/* Création d'un nouvel élément */
void creation(filed *e,int pri, char val)
{
    new(*e);
    e->pri=pri;
    e->val=val;
    e->suiv=NULL;
}
/*afficher dune filed*/
void afficher(filed l)
{
 filed *q;
 *q=l;
 while(q!=NULL) {
 printf("Priorite:> %d",q->pri);
 printf("Valeur => %c",q->val);
 q=q->suiv;
                   }
}
/*insert en queu */
void emfiler(filed *l,int pe,char ve)
{    filed e,q;
     creation(&e,pe,ve);
     if (l==NULL)  *l=e;
     else {
     q=*l;
     while(q->suiv!=NULL) q=q->suiv;
     q->suiv=e;
               }
}
/*supression de la tete*/
void defiler(filed *l,int *pd,char *vd)
{
 filed q,p;
 q=*l;
 p=*l;
 p=p->suiv;
 q->suiv=NULL;
 *pd=q->pri;
 *vd=q->val;
 free(q);
}
/*insertion en tete*/
void empiler(filed *l,int pe,char ve)
{
 filed e,q;
 creation(&e,pe,ve);
 if (l=NULL)  *l=e;
 else {
 e->suiv=*l;
 *l=e;
     }
}
/*suppression de la tete*/
void depiler(filed *l,int *pd,char *vd)
{
 filed q,p;
 q=*l;
 p=*l;
 p=p->suiv;
 q->suiv=NULL;
 *pd=q->pri;
 *vd=q->val;
 free(q);
}
/*max pri*/
void maxpri(filed l,int *pm,char *vm)
{
 filed q,x;
 q=l;
 x=l;
 while(q!=NULL)  {
 if((q->pri)>(x->pri)) x=q;
 q=q->suiv;
           }
           *pm=x->pri;
           *vm=x->val;
 }
/*defiler par priorite*/
void defilerpri(filed *l,int *pd,char *vd)
{
     filed q,ls,t,p,r;
     char vs;
     int ps;
     ls=NULL;
     p=*l;
     maxpri(*l,pd,vd);
     while((p->pri!=*pd)&&(p->val!=*vd)) {
     defiler(l,&ps,&vs);
     empiler(&ls,ps,vs);
     r=*l;                                   }
if((r->val=vd)&&(r->pri=pd))  defiler(l,pd,vd);
if (ls!=NULL){
	do
	{
	depiler(ls,ps,vs);
	empiler(l,ps,vs);}
	while(ls!=NULL);
	}
			}
int main()
{
/*declaration des types et viables*/
filed l,lp;
char choix;
int prio,dp;
char vale,dv;
/*programme principal*/
 
l=NULL;
lp=NULL;
choix='y';
printf(">L ELEMENT LE PLUS PRIORITAIRE EST CELUI QUI A LA PRIORITE LA PLUS SUPERIEUR<\n");
printf("\n");
while(choix!='n') {
printf("Entrer la valeur(un caractere):\n");
scanf("%c",&vale);
printf("Entrer la priorite(un entier):\n");
scanf("%d",&prio);
emfiler(&l,prio,vale);
printf("Voulez vous ajoutez un element?  (y/n)\n");
scanf("%c",&choix);
}
printf("\n");
printf("LA FILE DES ELEMENTS CREE\n");
afficher(l);
printf("\n");
printf("LA FILE DES ELEMENTS AVEC LA PRIORITE CROISSANTE\n");
 
do{
defilerpri(l,dp,dv);
empiler(lp,dp,dv);
}while(l!=NULL);
afficher(lp);
getchar();
} |