Advertisement
sandeshMC

Dequeue using array and stucture

Aug 15th, 2013
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.71 KB | None | 0 0
  1. #include<stdio.h>
  2. #define MAX 10
  3. struct queue {
  4.     int r,f,data[MAX];
  5. }q;
  6. int empty() {
  7.     if(q.r==-1) return (1);
  8.     return (0);
  9. }
  10. int full() {
  11.     if((q.r+1)%MAX==q.f) return (1);
  12.     return (0);
  13. }
  14. void enqueueR(int x) {
  15.     if(q.r==-1) {
  16.         q.r=q.f=0;
  17.         q.data[q.r]=x;
  18.     }
  19.     else {
  20.     q.r=(q.r+1)%MAX;
  21.     q.data[q.r]=x;
  22.     }
  23. }
  24. void enqueueF(int x) {
  25.     if(q.r==-1) {
  26.         q.r=q.f=0;
  27.         q.data[q.f]=x;
  28.     }
  29.     else {
  30.     q.f=(q.f-1+MAX)%MAX;
  31.     q.data[q.f]=x;
  32.     }
  33. }
  34. int dequeueF() {
  35.     int x;
  36.     x=q.data[q.f];
  37.     if(q.r==q.f) {
  38.         q.r=-1;
  39.         q.f=-1;
  40.     }
  41.     else
  42.         q.f=(q.f+1)%MAX;
  43.     return x;
  44. }
  45. int dequeueR() {
  46.     int x;
  47.     x=q.data[q.r];
  48.     if(q.r==q.f) {
  49.         q.r=-1;
  50.         q.f=-1;
  51.     }
  52.     else
  53.         q.r=(q.r-1+MAX)%MAX;
  54.     return x;
  55. }
  56. void print() {
  57.     int i;
  58.     if(!empty()) {
  59.         printf("\n");
  60.         for(i=q.f;i!=q.r;i=(i+1)%MAX)
  61.             printf("%d\t",q.data[i]);
  62.         printf("%d\t",q.data[i]);
  63.     }
  64. }
  65. void main() {
  66.     q.r=-1;
  67.     q.f=-1;
  68.     int n,x;
  69.     do {
  70.         printf("\n1: INSERT FRONT\n2: INSERT REAR\n3: DELETE FRONT\n4: DELETE REAR\n5: PRINT ELEMENTS\n6: QUIT");
  71.         printf("\nENTER YOUR CHOICE");
  72.         scanf("%d",&n);
  73.         switch(n) {
  74.             case 1: printf("\n ENTER A VALUE");
  75.             scanf("%d",&x);
  76.             if(!full())
  77.             enqueueF(x);
  78.             else
  79.             printf("\nQUEUE IS FULL");
  80.             break;
  81.             case 2: printf("\n ENTER A VALUE :");
  82.             scanf("%d",&x);
  83.             if(!full())
  84.             enqueueR(x);
  85.             else
  86.             printf("\n QUEUE IS FULL");
  87.             break;
  88.             case 3: if(!empty()) {
  89.             x=dequeueF();
  90.             printf("\nDELETED DATA =%d",x);
  91.             }
  92.             else printf("\n QUEUE IS EMPTY !!");
  93.             break;
  94.             case 4: if(!empty()) {
  95.             x=dequeueR();
  96.             printf("\nDELETED DATA =%d",x);
  97.             }
  98.             else printf("\n QUEUE IS EMPTY !!");
  99.             break;
  100.             case 5: print(); break;
  101.             case 6: exit(0);
  102.         }
  103.     }while(1);
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement