使用c语言实现队列的基本操作,包括定义队列结构、创建一个队列、判断队列是否为空 、判断队列是否已满 、入队操作、出队操作、获取队首元素、获取队列大小、清空队列等操作。
时间: 2023-07-10 09:22:50 浏览: 53
利用C语言实现队列的基本功能
3星 · 编辑精心推荐
好的,以下是基于 C 语言实现队列的基本操作:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 10
typedef struct Queue {
int data[MAX_SIZE];
int front; // 队首指针(指向队首元素)
int rear; // 队尾指针(指向队尾元素的下一个位置)
} Queue;
// 创建一个队列
Queue* createQueue() {
Queue* q = (Queue*)malloc(sizeof(Queue));
q->front = q->rear = 0;
return q;
}
// 判断队列是否为空
int isEmpty(Queue* q) {
return q->front == q->rear;
}
// 判断队列是否已满
int isFull(Queue* q) {
return (q->rear + 1) % MAX_SIZE == q->front;
}
// 入队操作
void enqueue(Queue* q, int val) {
if (isFull(q)) {
printf("Error: Queue is full!\n");
return;
}
q->data[q->rear] = val;
q->rear = (q->rear + 1) % MAX_SIZE;
}
// 出队操作
int dequeue(Queue* q) {
if (isEmpty(q)) {
printf("Error: Queue is empty!\n");
return -1;
}
int val = q->data[q->front];
q->front = (q->front + 1) % MAX_SIZE;
return val;
}
// 获取队首元素
int peek(Queue* q) {
if (isEmpty(q)) {
printf("Error: Queue is empty!\n");
return -1;
}
return q->data[q->front];
}
// 获取队列大小
int size(Queue* q) {
return (q->rear - q->front + MAX_SIZE) % MAX_SIZE;
}
// 清空队列
void clear(Queue* q) {
q->front = q->rear = 0;
}
int main() {
Queue* q = createQueue();
enqueue(q, 1);
enqueue(q, 2);
enqueue(q, 3);
printf("Queue size: %d\n", size(q));
printf("Queue front: %d\n", peek(q));
dequeue(q);
printf("Queue front: %d\n", peek(q));
printf("Queue size: %d\n", size(q));
clear(q);
printf("Queue size: %d\n", size(q));
return 0;
}
```
上面的代码实现了队列的基本操作,包括定义队列结构、创建一个队列、判断队列是否为空、判断队列是否已满、入队操作、出队操作、获取队首元素、获取队列大小、清空队列等操作。
阅读全文