Advertisement
Guest User

q

a guest
Nov 11th, 2019
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.39 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<conio.h>
  4. #include<string.h>
  5.  
  6.  
  7. // ---------------- list declaration -----------
  8. typedef struct element element;
  9. struct element {
  10. int val;
  11. int prio ;
  12. struct element *suivant;
  13. };
  14.  
  15. typedef element* list;
  16.  
  17.  
  18.  
  19.  
  20. typedef struct File {
  21. list tete;
  22. list queue;
  23. }File;
  24.  
  25. File r;
  26.  
  27. ///////////////////////////////////////////////////////////////////////////
  28. void Initialisaion(File f) {
  29. f.tete=NULL;
  30. f.queue=NULL;
  31. r=f;
  32. }
  33. ///////////////////////////////////////////////////////////////////////////
  34. int file_vide(File f) {
  35. if(f.tete==NULL)
  36. return 1;
  37. else
  38. return 0;
  39. }
  40. ///////////////////////////////////////////////////////////////////////////
  41. void affichage(File f) {
  42.  
  43. f=r ;
  44. if(file_vide(f))
  45. printf("\n La file est vide \n ");
  46.  
  47. else{
  48.  
  49. printf("\n La file est ");
  50. while(!file_vide(r)) {
  51. printf("%d ",r.tete->val);
  52. r.tete=r.tete->suivant;
  53. }
  54. }
  55. r=f;
  56. }
  57. /////////////////////////////Insertion normale/////////////////////////////
  58.  
  59. void emfiler_Norm(File f) {
  60. f=r;
  61. int i,a;
  62. int b,c;
  63. list ele;
  64.  
  65. printf("entre le nomber des element\n");
  66. scanf("%d",&a);
  67.  
  68. for(i=1;i<=a;i++){
  69.  
  70. ele=malloc(sizeof(element));
  71. ele->suivant=NULL;
  72.  
  73. printf("entrer la valure\n");
  74. scanf("%d",&b);
  75. ele->val=b;
  76.  
  77. printf("entrer la priorte\n");
  78. scanf("%d",&c);
  79. ele->prio=c;
  80.  
  81. if(file_vide(f))
  82. f.tete=f.queue=ele;
  83.  
  84. else{
  85.  
  86. f.queue->suivant=ele;
  87. f.queue=f.queue->suivant;
  88. }
  89.  
  90. }
  91.  
  92. r=f;
  93.  
  94. }
  95.  
  96. ////////////La fonction suppression en respectant la priorité//////////////
  97. void defiler_Resp_ordre(File f) {
  98. f=r;
  99.  
  100. list actuel;
  101. list actuelmax;
  102. list pred;
  103. list predmax;
  104. int pmax=-1;
  105.  
  106.  
  107. if(!file_vide(f)) {
  108. actuel=f.tete;
  109. pred=NULL;
  110. while(actuel!=NULL)
  111. {
  112. if(actuel->prio>pmax)
  113. {
  114. actuelmax=actuel;
  115. predmax=pred;
  116. pmax=actuel->prio;
  117. }
  118. pred=actuel;
  119. actuel=actuel->suivant;
  120. }
  121. if(predmax==NULL)
  122. {
  123. f.tete=f.tete->suivant;
  124. if(f.tete==NULL)
  125. {
  126. f.queue=NULL;
  127. printf("\nla valeur supprimee est :%d qui a la priorite :%d",actuelmax->val,actuelmax->prio);
  128. free(actuelmax);
  129. }
  130.  
  131. }
  132. else
  133. {
  134. predmax->suivant=actuelmax->suivant;
  135. if(actuelmax->suivant==NULL)
  136. {
  137. f.queue=predmax;
  138. printf("\nla valeur supprimee est :%d qui a la priorite :%d",actuelmax->val,actuelmax->prio);
  139. free(actuelmax);
  140. }
  141.  
  142. }
  143. }
  144. r=f;
  145. }
  146.  
  147. ////////////////////Insertion en respectant l'ordre////////////////////////
  148. void emfiler_resp_prio(File f) {
  149. f=r;
  150. int i,n;
  151. int c,a;
  152. list ele;
  153. printf("Le nombre des elements dans la file : \n");
  154. scanf("%d",&n);
  155.  
  156. for(i=1;i<=n;i++) {
  157.  
  158. ele= malloc(sizeof(element));
  159. ele->suivant=NULL;
  160.  
  161. printf("Entrer la valeur \n ");
  162. scanf("%d",&c);
  163. ele->val=c;
  164.  
  165. printf("Entrer la priorit \n ");
  166. scanf("%d",&a);
  167. ele->prio=a;
  168.  
  169. if(file_vide(f))
  170. f.tete=f.queue=ele;
  171. else {
  172. if(ele->prio>f.tete->prio) {
  173. ele->suivant=f.tete;
  174. f.tete=ele;
  175. }
  176. else {
  177. list actuel=f.tete;
  178. list pred=f.tete;
  179. while((actuel!=f.queue)&&(actuel->prio>ele->prio)) {
  180. pred=actuel;
  181. actuel=actuel->suivant;
  182. }
  183. if(actuel->prio<=ele->prio) {
  184. pred->suivant=ele;
  185. ele->suivant=actuel;
  186. }
  187. else {
  188. f.queue->suivant=ele;
  189. f.queue=f.queue->suivant;
  190. }
  191. }
  192. }
  193. }
  194. r=f;
  195.  
  196. }
  197. ////////////////////La fonction suppression normale////////////////////////
  198. void defiler_Norm(File f) {
  199. f=r ;
  200. File q;
  201. if(!file_vide(f)) {
  202. q=f;
  203. f.tete=f.tete->suivant ;
  204. printf("\nla valeur supprimee est :%d qui a la priorite :%d",q.tete->val,q.tete->prio);
  205. free(q.tete);
  206. }
  207. r=f;
  208.  
  209. }
  210. ////////////////////////////////Le Menu////////////////////////////////////
  211. int main() {
  212. int choix,tr=1;
  213.  
  214. while(tr) {
  215. printf(" \n 1:enfiler la file normale :\n");
  216. printf(" 2:defiler la file :(Par priotite) \n");
  217. printf(" 3:enfiler la file :(Par la priorite) \n");
  218. printf(" 4:defiler la file normale : \n\n");
  219. printf(" 0:Quitter \n");
  220. printf("\nEntrer votre choix: ");
  221. scanf("%d",&choix);
  222.  
  223. switch(choix) {
  224. case 1 :Initialisaion(r);
  225. emfiler_Norm(r);
  226. affichage(r);
  227. break;
  228. case 2 :
  229. defiler_Resp_ordre(r);
  230. affichage(r);
  231. break;
  232. case 3 :Initialisaion(r);
  233. emfiler_resp_prio(r);
  234. affichage(r);
  235. break;
  236. case 4 :
  237. defiler_Norm(r);
  238. affichage(r);
  239. break;
  240. case 0 :
  241. tr=0;
  242. break;
  243. default :
  244. printf("\nLe numero que vous avez entre n'existe pas dans le menu precedent,merci\n\n");
  245. affichage(r);
  246. break;
  247. }
  248. }
  249.  
  250. return 0;
  251. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement