tampurus

3.5 Flexible Deque

Nov 27th, 2021 (edited)
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.62 KB | None | 0 0
  1. #include<stdio.h>
  2. #define q_s 3
  3. int rear,front;
  4. int queue[q_s];
  5. void Insertion_R(int ele){
  6.     if(front==0 && rear == q_s-1) {
  7.         printf("\nQueue is full");
  8.         return;
  9.     }
  10.     else if (rear==-1 && front == -1){
  11.         rear = front = 0;
  12.     }
  13.     else if (front != 0 && rear == q_s-1 ){
  14.         for(int i=front ; i<=rear ; i++){
  15.             queue[i-1] = queue[i];
  16.         }
  17.         front--;
  18.     }
  19.     else rear++;
  20.     queue[rear] = ele;
  21. }
  22.  
  23. void Insertion_F(int ele){
  24.     if(front==0 && rear == q_s-1) printf("\nQueue is full");
  25.     else if (rear==-1 && front == -1) {
  26.         rear = front = 0;
  27.         queue[front] = ele;
  28.     }
  29.     else if (front == 0 && rear != q_s-1 ){
  30.         for(int i=rear ; i>=front ; i--){
  31.             queue[i+1] = queue[i];
  32.         }
  33.         rear++;
  34.         queue[front] = ele;
  35.     }
  36.     else {
  37.         queue[--front] = ele;
  38.     }
  39. }
  40. void Deletion_F(){
  41.     if(rear==-1) printf("\nQueue is already empty");
  42.     else if (rear == front){
  43.         queue[front]=0;
  44.         rear = front = -1;
  45.     }
  46.     else queue[front++] = 0;
  47. }
  48. void Deletion_R(){
  49.     if(rear == -1)printf("\nQueue is already empty");
  50.     else if (rear == front){
  51.         queue[rear] = 0;
  52.         rear = front = -1;
  53.     }
  54.     else{
  55.         queue[rear--] = 0;
  56.     }
  57. }
  58. void Print(){
  59.     if(rear == -1) {
  60.         printf("\nQueue is empty");
  61.         return;
  62.     }
  63.     for(int i = front ; i<=rear ; i++){
  64.         printf("%d ",queue[i]);
  65.     }
  66. }
  67. int main()
  68. {
  69.     rear = front = -1;
  70.     int key,choice,element,id_choice;
  71.     while(1){
  72.         printf("\n1 for insertion \n2 for deletion\nAny key to just print the queue\n");
  73.         scanf("%d",&choice);
  74.         if(choice==1){
  75.             printf("\nWhich insertion 1 - front and 2 - rear ");
  76.             scanf("%d",&id_choice);
  77.             if(id_choice == 1){
  78.                 printf("Enter the element ");
  79.                 scanf("%d",&element);
  80.                 Insertion_F(element);
  81.             }
  82.             else if(id_choice == 2){
  83.                 printf("Enter the element ");
  84.                 scanf("%d",&element);
  85.                 Insertion_R(element);
  86.             }
  87.         }
  88.         else if(choice==2){
  89.              printf("\nWhich deletion 1 - front and 2 - rear ");
  90.             scanf("%d",&id_choice);
  91.             if(id_choice == 1){
  92.                 Deletion_F();
  93.             }
  94.             else if(id_choice == 2){
  95.                 Deletion_R();
  96.             }
  97.         }
  98.         else Print();
  99.        
  100.         printf("\n1 - for repeat and any key to exit ");
  101.         scanf("%d",&key);
  102.         if(key!=1)break;
  103.     }
  104.     return 0;
  105. }
Advertisement
Add Comment
Please, Sign In to add comment