upsidedown

linear n circular queue

Sep 26th, 2011
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.82 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #define max 3
  4.  
  5. struct queue
  6. {
  7.     int item[max];
  8.     int front;
  9.     int rear;
  10.     int count;
  11. }p;
  12.  
  13.  
  14.  
  15.  
  16.  
  17. void main()
  18. {
  19.     int a,b,i,s=1,f=1,j;
  20.     p.front=(max-1);
  21.     p.rear=(max-1);
  22.     p.count=0;
  23.     printf("enter \n1.for linear queue \n2.for circular queue\n");
  24.     scanf("%d",&a);
  25.     switch(a)
  26.     {
  27.     case 1:
  28.         p.front=0;
  29.         p.rear=-1;
  30.         p.count=0;
  31.         do
  32.         {
  33.             printf("enter 1.to insert element 2.to delete element 3.to display queue\n");
  34.             scanf("%d",&b);
  35.             switch(b)
  36.             {
  37.                 case 1:
  38.                     if(p.rear==(max-1))
  39.                     {
  40.                         printf("the queue is full\n");
  41.                         break;
  42.                     }
  43.                     p.rear++;
  44.                     printf("enter the data element\n");
  45.                     scanf("%d",&p.item[p.rear]);
  46.                     break;
  47.  
  48.                 case 2:
  49.                     if(p.front>p.rear)
  50.                     {
  51.                         printf("queue is empty, cannot delete\n");
  52.                         break;
  53.                     }
  54.                     printf("the element being deleted is %d\n",p.item[p.front]);
  55.                     p.front++;
  56.                     break;
  57.                    
  58.                 case 3:
  59.                     if(p.front>p.rear)
  60.                     {
  61.                         printf("queue is empty\n");
  62.                         break;
  63.                     }
  64.                     printf("elements of the queue are:\n");
  65.                     i=(p.front);
  66.                     while(i<=(p.rear))
  67.                     {
  68.                         printf("%d\n",p.item[i]);
  69.                         i++;
  70.                     }
  71.                     break;
  72.  
  73.                 default:
  74.                     printf("invalid operator\n");
  75.                     break;
  76.             }
  77.             printf("enter 0 to exit\n");
  78.             scanf("%d",&i);
  79.         }while(i!=0);
  80.         break;
  81.    
  82.     case 2:
  83.         p.front=(max-1);
  84.         p.rear=(max-1);
  85.         do
  86.         {
  87.             printf("enter 1.to insert element 2.to delete element 3.to display queue\n");
  88.             scanf("%d",&b);
  89.             switch(b)
  90.             {
  91.                 case 1:
  92.                     p.rear=((p.rear+1)%(max));
  93.                     printf("index %d %d\n",p.rear,p.front);
  94.                     if((p.rear==p.front)&&(p.count==max)&&(s==0))
  95.                     {
  96.                         printf("the queue is full\n");
  97.                         p.rear--;
  98.                         break;
  99.                     }
  100.                     printf("enter the data element\n");
  101.                     scanf("%d",&p.item[p.rear]);
  102.                     p.count++;
  103.                     if(p.rear==p.front)
  104.                     {
  105.                         p.rear--;
  106.                         s=0;
  107.                     }
  108.                     break;
  109.  
  110.                 case 2:
  111.                     if(p.count==0)
  112.                     {
  113.                         printf("queue is empty, cannot delete\n");
  114.                         break;
  115.                     }
  116.                     if(f!=0)
  117.                         p.front=(p.front+1)%max;
  118.                    
  119.                     s=1;
  120.                     printf("the element being deleted is %d\n",p.item[p.front]);
  121.                     f=0;
  122.                     p.count--;
  123.                     p.front=((p.front+1)%(max));
  124.                     break;
  125.                    
  126.                 case 3:
  127.                     if(p.count==0)
  128.                     {
  129.                         printf("queue is empty\n");
  130.                         break;
  131.                     }
  132.                     if(f!=0)
  133.                         p.front=(p.front+1)%max;
  134.                     printf("elements of the queue are:\n");
  135.                     i=(p.front);
  136.                     j=p.count;
  137.                     while(j!=0)
  138.                     {
  139.                         printf("%d\n",p.item[i]);
  140.                         i=((i++)%max);
  141.                         j--;
  142.                     }
  143.                     if(f!=0)
  144.                         p.front=(max-1);
  145.                     break;
  146.  
  147.                 default:
  148.                     printf("invalid operator\n");
  149.                     break;
  150.             }
  151.             printf("enter 0 to exit\n");
  152.             scanf("%d",&i);
  153.         }while(i!=0);
  154.         break;
  155.  
  156.     default:
  157.         printf("invalid operator\n");
  158.         break;
  159.     }
  160. }
  161.  
Advertisement
Add Comment
Please, Sign In to add comment