Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- #include<conio.h>
- #include<string.h>
- // ---------------- list declaration -----------
- typedef struct element element;
- struct element {
- int val;
- int prio ;
- struct element *suivant;
- };
- typedef element* list;
- typedef struct File {
- list tete;
- list queue;
- }File;
- File r;
- ///////////////////////////////////////////////////////////////////////////
- void Initialisaion(File f) {
- f.tete=NULL;
- f.queue=NULL;
- r=f;
- }
- ///////////////////////////////////////////////////////////////////////////
- int file_vide(File f) {
- if(f.tete==NULL)
- return 1;
- else
- return 0;
- }
- ///////////////////////////////////////////////////////////////////////////
- void affichage(File f) {
- f=r ;
- if(file_vide(f))
- printf("\n La file est vide \n ");
- else{
- printf("\n La file est ");
- while(!file_vide(r)) {
- printf("%d ",r.tete->val);
- r.tete=r.tete->suivant;
- }
- }
- r=f;
- }
- /////////////////////////////Insertion normale/////////////////////////////
- void emfiler_Norm(File f) {
- f=r;
- int i,a;
- int b,c;
- list ele;
- printf("entre le nomber des element\n");
- scanf("%d",&a);
- for(i=1;i<=a;i++){
- ele=malloc(sizeof(element));
- ele->suivant=NULL;
- printf("entrer la valure\n");
- scanf("%d",&b);
- ele->val=b;
- printf("entrer la priorte\n");
- scanf("%d",&c);
- ele->prio=c;
- if(file_vide(f))
- f.tete=f.queue=ele;
- else{
- f.queue->suivant=ele;
- f.queue=f.queue->suivant;
- }
- }
- r=f;
- }
- ////////////La fonction suppression en respectant la priorité//////////////
- void defiler_Resp_ordre(File f) {
- f=r;
- list actuel;
- list actuelmax;
- list pred;
- list predmax;
- int pmax=-1;
- if(!file_vide(f)) {
- actuel=f.tete;
- pred=NULL;
- while(actuel!=NULL)
- {
- if(actuel->prio>pmax)
- {
- actuelmax=actuel;
- predmax=pred;
- pmax=actuel->prio;
- }
- pred=actuel;
- actuel=actuel->suivant;
- }
- if(predmax==NULL)
- {
- f.tete=f.tete->suivant;
- if(f.tete==NULL)
- {
- f.queue=NULL;
- printf("\nla valeur supprimee est :%d qui a la priorite :%d",actuelmax->val,actuelmax->prio);
- free(actuelmax);
- }
- }
- else
- {
- predmax->suivant=actuelmax->suivant;
- if(actuelmax->suivant==NULL)
- {
- f.queue=predmax;
- printf("\nla valeur supprimee est :%d qui a la priorite :%d",actuelmax->val,actuelmax->prio);
- free(actuelmax);
- }
- }
- }
- r=f;
- }
- ////////////////////Insertion en respectant l'ordre////////////////////////
- void emfiler_resp_prio(File f) {
- f=r;
- int i,n;
- int c,a;
- list ele;
- printf("Le nombre des elements dans la file : \n");
- scanf("%d",&n);
- for(i=1;i<=n;i++) {
- ele= malloc(sizeof(element));
- ele->suivant=NULL;
- printf("Entrer la valeur \n ");
- scanf("%d",&c);
- ele->val=c;
- printf("Entrer la priorit \n ");
- scanf("%d",&a);
- ele->prio=a;
- if(file_vide(f))
- f.tete=f.queue=ele;
- else {
- if(ele->prio>f.tete->prio) {
- ele->suivant=f.tete;
- f.tete=ele;
- }
- else {
- list actuel=f.tete;
- list pred=f.tete;
- while((actuel!=f.queue)&&(actuel->prio>ele->prio)) {
- pred=actuel;
- actuel=actuel->suivant;
- }
- if(actuel->prio<=ele->prio) {
- pred->suivant=ele;
- ele->suivant=actuel;
- }
- else {
- f.queue->suivant=ele;
- f.queue=f.queue->suivant;
- }
- }
- }
- }
- r=f;
- }
- ////////////////////La fonction suppression normale////////////////////////
- void defiler_Norm(File f) {
- f=r ;
- File q;
- if(!file_vide(f)) {
- q=f;
- f.tete=f.tete->suivant ;
- printf("\nla valeur supprimee est :%d qui a la priorite :%d",q.tete->val,q.tete->prio);
- free(q.tete);
- }
- r=f;
- }
- ////////////////////////////////Le Menu////////////////////////////////////
- int main() {
- int choix,tr=1;
- while(tr) {
- printf(" \n 1:enfiler la file normale :\n");
- printf(" 2:defiler la file :(Par priotite) \n");
- printf(" 3:enfiler la file :(Par la priorite) \n");
- printf(" 4:defiler la file normale : \n\n");
- printf(" 0:Quitter \n");
- printf("\nEntrer votre choix: ");
- scanf("%d",&choix);
- switch(choix) {
- case 1 :Initialisaion(r);
- emfiler_Norm(r);
- affichage(r);
- break;
- case 2 :
- defiler_Resp_ordre(r);
- affichage(r);
- break;
- case 3 :Initialisaion(r);
- emfiler_resp_prio(r);
- affichage(r);
- break;
- case 4 :
- defiler_Norm(r);
- affichage(r);
- break;
- case 0 :
- tr=0;
- break;
- default :
- printf("\nLe numero que vous avez entre n'existe pas dans le menu precedent,merci\n\n");
- affichage(r);
- break;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement