给出双端队列的c语言代码
时间: 2023-05-24 22:00:48 浏览: 50
下面是双端队列的C语言代码:
```
#include <stdio.h>
#define MAX_SIZE 10
int deque[MAX_SIZE];
int front = -1;
int rear = -1;
void insertFront(int element)
{
if ((front == 0 && rear == MAX_SIZE - 1) || (front == rear + 1))
{
printf("Deque is full\n");
return;
}
if (front == -1 && rear == -1)
{
front = 0;
rear = 0;
}
else if (front == 0)
{
front = MAX_SIZE - 1;
}
else
{
front--;
}
deque[front] = element;
printf("%d inserted at front\n", element);
}
void insertRear(int element)
{
if ((front == 0 && rear == MAX_SIZE - 1) || (front == rear + 1))
{
printf("Deque is full\n");
return;
}
if (front == -1 && rear == -1)
{
front = 0;
rear = 0;
}
else if (rear == MAX_SIZE - 1)
{
rear = 0;
}
else
{
rear++;
}
deque[rear] = element;
printf("%d inserted at rear\n", element);
}
void deleteFront()
{
if (front == -1 && rear == -1)
{
printf("Deque is empty\n");
return;
}
printf("%d deleted from front\n", deque[front]);
if (front == rear)
{
front = -1;
rear = -1;
}
else if (front == MAX_SIZE - 1)
{
front = 0;
}
else
{
front++;
}
}
void deleteRear()
{
if (front == -1 && rear == -1)
{
printf("Deque is empty\n");
return;
}
printf("%d deleted from rear\n", deque[rear]);
if (front == rear)
{
front = -1;
rear = -1;
}
else if (rear == 0)
{
rear = MAX_SIZE - 1;
}
else
{
rear--;
}
}
void display()
{
if (front == -1 && rear == -1)
{
printf("Deque is empty\n");
return;
}
printf("The elements in the deque are: ");
if (front <= rear)
{
for (int i = front; i <= rear; i++)
{
printf("%d ", deque[i]);
}
}
else
{
for (int i = front; i < MAX_SIZE; i++)
{
printf("%d ", deque[i]);
}
for (int i = 0; i <= rear; i++)
{
printf("%d ", deque[i]);
}
}
printf("\n");
}
int main()
{
int choice, element;
do
{
printf("Choose an option:\n");
printf("1. Insert element at front\n");
printf("2. Insert element at rear\n");
printf("3. Delete element from front\n");
printf("4. Delete element from rear\n");
printf("5. Display the deque\n");
printf("6. Exit\n");
scanf("%d", &choice);
switch (choice)
{
case 1:
printf("Enter the element to be inserted at front: ");
scanf("%d", &element);
insertFront(element);
break;
case 2:
printf("Enter the element to be inserted at rear: ");
scanf("%d", &element);
insertRear(element);
break;
case 3:
deleteFront();
break;
case 4:
deleteRear();
break;
case 5:
display();
break;
case 6:
printf("Exiting...\n");
break;
default:
printf("Invalid choice\n");
break;
}
} while (choice != 6);
return 0;
}
```
希望能满足您的需求,如果还有其他问题欢迎提问。