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.
- Enqueue from the Front.
- Enqueue from the Rear.
- Dequeue from the Front.
- Dequeue from the Rear.
- Get Front Element.
- Get Rear Element.
- 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
Post a Comment