Follow This Blog For more... 😊

Implement the deque using a circular array.| Data Structure | Using C language|

👨‍💻Implement the DEQUE using CIRCULAR ARRAY.

⚙️Here, we implemented the following Operations for DEQUE.

  1. Enqueue from the Front.
  2. Enqueue from the Rear.
  3. Dequeue from the Front.
  4. Dequeue from the Rear.
  5. Get Front Element.
  6. Get Rear Element.
  7. Display (to display created Deque)

CODE:


    // Implement the deque using a circular array
    #include <stdio.h>
    #include <stdlib.h>
    #define N 10
    int deque[N];
    int fp = -1;
    int rp = -1;
    void enqueue_from_front();
    void dequeue_from_front();
    void enqueue_from_rear();
    void dequeue_from_rear();
    void get_front();
    void get_rear();
    void display();
    int operation_list();

    main()
    {
        int choice;
        do
        {
                choice = operation_list();
            switch (choice)
            {
                case 0:
                printf("\n # Thank you %c\n-->Visit: https://LSkyeducation.blogspot.com\n\n", 2);
                exit(0);
            case 1:
                enqueue_from_front();
                break;
            case 2:
                enqueue_from_rear();
                break;
            case 3:
                dequeue_from_front();
                break;
            case 4:
                dequeue_from_rear();
                break;
            case 5:
                get_front();
                break;
            case 6:
                get_rear();
                break;
            case 7:
                display();
                break;
            default:
                printf("\n# PLEASE enter between 0 to 7");
            }
        } while (choice != 0);
    }

    void enqueue_from_front()
    {
            int data;
        if ((fp == 0 && rp == N - 1) || fp == rp + 1)
        {
                printf("# Deque is Overflow !!\n");
        }
        else if (fp == -1 && rp == -1)
        {
                fp = 0;
            rp = 0;
            printf("=>Enter data:");
            scanf("%d", &data);
            deque[fp] = data;
            printf("-> data:%d inserted Successfully.\n", deque[fp]);
        }
        else if (fp == 0)
        {
                fp = N - 1;
            printf("=>Enter data:");
            scanf("%d", &data);
            deque[fp] = data;
            printf("-> data:%d inserted Successfully.\n", deque[fp]);
        }
        else
        {
                fp--;
            printf("=>Enter data:");
            scanf("%d", &data);
            deque[fp] = data;
            printf("-> data:%d inserted Successfully.\n", deque[fp]);
        }
    }

    void enqueue_from_rear()
    {
            int data;
        if ((fp == 0 && rp == N - 1) || fp == rp + 1)
        {
                printf("# Deque is Overflow !!\n");
        }
        else if (fp == -1 && rp == -1)
        {
                fp = 0;
            rp = 0;
            printf("=>Enter data:");
            scanf("%d", &data);
            deque[rp] = data;
            printf("-> data:%d inserted Successfully.\n", deque[rp]);
        }
        else if (rp == N - 1)
        {
                rp = 0;
            printf("=>Enter data:");
            scanf("%d", &data);
            deque[rp] = data;
            printf("-> data:%d inserted Successfully.\n", deque[rp]);
        }
        else
        {
                rp++;
            printf("=>Enter data:");
            scanf("%d", &data);
            deque[rp] = data;
            printf("-> data:%d inserted Successfully.\n", deque[rp]);
        }
    }

    void dequeue_from_front()
    {
            if (fp == -1 && rp == -1)
        {
                printf("->Deque is ENPTY !!\n");
        }
        else if (fp == rp)
        {
                printf("-> data:%d is deleted Successfully.\n", deque[fp]);
            fp = -1;
            rp = -1;
        }
        else if (fp == N - 1)
        {
                printf("-> data:%d is deleted Successfully.\n", deque[fp]);
            fp = 0;
        }
        else
        {
                printf("-> data:%d is deleted Successfully.\n", deque[fp]);
            fp++;
        }
    }

    void dequeue_from_rear()
    {
            if (fp == -1 && rp == -1)
        {
                printf("->Deque is ENPTY !!\n");
        }
        else if (fp == rp)
        {
                printf("-> data:%d is deleted Successfully.\n", deque[rp]);
            fp = -1;
            rp = -1;
        }
        else if (rp == 0)
        {
                printf("-> data:%d is deleted Successfully.\n", deque[rp]);
            rp = N - 1;
        }
        else
        {
                printf("-> data:%d is deleted Successfully.\n", deque[rp]);
            rp--;
        }
    }

    void get_front()
    {
            if (fp == -1 && rp == -1)
        {
                printf("->Deque is ENPTY !!\n");
        }
        else
        {
                printf("->Element at front pointer is %d\n", deque[fp]);
        }
    }

    void get_rear()
    {
            if (fp == -1 && rp == -1)
        {
                printf("->Deque is ENPTY !!\n");
        }
        else
        {
                printf("->Element at rear pointer is %d\n", deque[rp]);
        }
    }

    void display()
    {
            if (fp == -1 && rp == -1)
        {
                printf("\n->Deque is ENPTY !!");
            return;
        }
        int i = fp;
        printf("\nElements in a deque are: ");
        while (i != rp)
        {
                printf("%d ", deque[i]);
            i = (i + 1) % N;
        }
        printf("%d", deque[rp]);
        printf("\n");
    }

    int operation_list()
    {
            int choice;
        printf("\n_______________Deque Operation list_______________fp=%d,rp=%d\n", fp, rp);
        printf("|0|Exit.\n");
        printf("|1|Enqueue from front\n");
        printf("|2|Enqueue from rear\n");
        printf("|3|Dequeue from front\n");
        printf("|4|Dequeue from rear\n");
        printf("|5|Get front Element\n");
        printf("|6|Get rear element\n");
        printf("|7|Display\n");
        printf("=>Enter choice:");
        scanf("%d", &choice);
        return choice;
    }

Comments

Popular Posts