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 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();
} |
Partager