使用c语言实现队列的基本操作,包括定义队列结构、创建一个队列、判断队列是否为空 、判断队列是否已满 、入队操作、出队操作、获取队首元素、获取队列大小、清空队列等操作。
时间: 2023-08-05 17:07:03 浏览: 135
好的,下面是基本的队列操作的C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_QUEUE_SIZE 100 // 定义队列的最大容量
// 定义队列结构体
typedef struct {
int data[MAX_QUEUE_SIZE]; // 数组存放队列元素
int front; // 队首指针
int rear; // 队尾指针
} Queue;
// 创建一个空队列
Queue* createQueue() {
Queue* queue = (Queue*) malloc(sizeof(Queue)); // 分配内存
queue->front = -1; // 初始化队首指针
queue->rear = -1; // 初始化队尾指针
return queue;
}
// 判断队列是否为空
int isQueueEmpty(Queue* queue) {
return queue->front == -1;
}
// 判断队列是否已满
int isQueueFull(Queue* queue) {
return (queue->rear + 1) % MAX_QUEUE_SIZE == queue->front;
}
// 入队操作
void enqueue(Queue* queue, int value) {
if (isQueueFull(queue)) {
printf("Error: Queue is full!\n");
return;
}
if (isQueueEmpty(queue)) {
queue->front = 0;
queue->rear = 0;
} else {
queue->rear = (queue->rear + 1) % MAX_QUEUE_SIZE;
}
queue->data[queue->rear] = value;
}
// 出队操作
int dequeue(Queue* queue) {
if (isQueueEmpty(queue)) {
printf("Error: Queue is empty!\n");
return -1;
}
int value = queue->data[queue->front];
if (queue->front == queue->rear) { // 队列中只有一个元素
queue->front = -1;
queue->rear = -1;
} else {
queue->front = (queue->front + 1) % MAX_QUEUE_SIZE;
}
return value;
}
// 获取队首元素
int front(Queue* queue) {
if (isQueueEmpty(queue)) {
printf("Error: Queue is empty!\n");
return -1;
}
return queue->data[queue->front];
}
// 获取队列大小
int size(Queue* queue) {
if (isQueueEmpty(queue)) {
return 0;
}
if (isQueueFull(queue)) {
return MAX_QUEUE_SIZE;
}
return (queue->rear - queue->front + MAX_QUEUE_SIZE) % MAX_QUEUE_SIZE + 1;
}
// 清空队列
void clearQueue(Queue* queue) {
queue->front = -1;
queue->rear = -1;
}
int main() {
Queue* queue = createQueue(); // 创建一个队列
// 入队操作
enqueue(queue, 1);
enqueue(queue, 2);
enqueue(queue, 3);
enqueue(queue, 4);
enqueue(queue, 5);
// 获取队首元素,并输出
printf("Front element: %d\n", front(queue));
// 出队操作,并输出
printf("Dequeue element: %d\n", dequeue(queue));
printf("Dequeue element: %d\n", dequeue(queue));
// 获取队列大小,并输出
printf("Queue size: %d\n", size(queue));
// 清空队列
clearQueue(queue);
return 0;
}
```
以上就是队列的基本操作的C语言实现。其中,`createQueue()` 函数用于创建一个空队列;`isQueueEmpty()` 函数用于判断队列是否为空;`isQueueFull()` 函数用于判断队列是否已满;`enqueue()` 函数用于入队操作;`dequeue()` 函数用于出队操作;`front()` 函数用于获取队首元素;`size()` 函数用于获取队列大小;`clearQueue()` 函数用于清空队列。
阅读全文