进出队列 数据结构 C语言
时间: 2023-06-30 21:17:46 浏览: 61
队列是一种先进先出(FIFO)的数据结构,可以用数组或链表实现。以下是一个基于数组的进出队列的代码示例:
```c
#include <stdio.h>
#include <stdbool.h>
#define MAX_SIZE 100
int front = -1; // 队首指针
int rear = -1; // 队尾指针
int queue[MAX_SIZE]; // 队列数组
// 判断队列是否为空
bool is_empty() {
return front == rear;
}
// 判断队列是否已满
bool is_full() {
return rear == MAX_SIZE - 1;
}
// 入队操作
bool enqueue(int element) {
if (is_full()) {
printf("Queue is full.\n");
return false;
}
rear++; // 队尾指针加1
queue[rear] = element; // 将元素插入队尾
return true;
}
// 出队操作
bool dequeue() {
if (is_empty()) {
printf("Queue is empty.\n");
return false;
}
front++; // 队首指针加1
return true;
}
// 获取队首元素
int get_front() {
if (is_empty()) {
printf("Queue is empty.\n");
return -1;
}
return queue[front + 1];
}
// 获取队列长度
int get_size() {
return rear - front;
}
int main() {
enqueue(1);
enqueue(2);
enqueue(3);
dequeue();
printf("Front element: %d\n", get_front());
printf("Queue size: %d\n", get_size());
return 0;
}
```
当队列为空时,`front`和`rear`的值均为-1。每次入队时,将`rear`指针加1,并将元素插入队尾;每次出队时,将`front`指针加1;获取队首元素时,返回`front+1`指向的元素;获取队列长度时,返回`rear-front`的值即可。