C语言实现队列的插入和删除
时间: 2023-11-05 18:04:15 浏览: 101
队列是一种先进先出(FIFO)的数据结构,可以使用数组或链表实现。下面是使用数组实现队列的插入和删除操作的示例代码:
```c
#include <stdio.h>
#define MAX_SIZE 100
int queue[MAX_SIZE];
int front = -1; // 队头指针
int rear = -1; // 队尾指针
// 插入元素到队列尾部
void enqueue(int x)
{
if (rear == MAX_SIZE - 1) {
printf("Queue is full.\n");
return;
}
if (front == -1) {
front = 0;
}
rear++;
queue[rear] = x;
}
// 删除队头元素并返回其值
int dequeue()
{
if (front == -1 || front > rear) {
printf("Queue is empty.\n");
return -1;
}
int x = queue[front];
front++;
return x;
}
int main()
{
enqueue(1);
enqueue(2);
enqueue(3);
printf("Dequeued element: %d\n", dequeue());
printf("Dequeued element: %d\n", dequeue());
printf("Dequeued element: %d\n", dequeue());
printf("Dequeued element: %d\n", dequeue());
return 0;
}
```
输出:
```
Dequeued element: 1
Dequeued element: 2
Dequeued element: 3
Queue is empty.
Dequeued element: -1
```
在这个示例中,使用了一个一维数组来实现队列,队头指针 `front` 和队尾指针 `rear` 都初始化为 -1,表示队列为空。`enqueue` 函数将元素插入到队尾,并更新 `rear` 指针;`dequeue` 函数删除队头元素并返回其值,如果队列为空则返回 -1。需要注意的是,在删除元素时需要判断队列是否为空或者队头指针是否大于队尾指针,如果是则说明队列为空。
阅读全文