队列的基本操作实现C语言代码
时间: 2023-10-26 11:18:33 浏览: 37
以下是使用 C 语言实现队列的基本操作代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define QUEUE_SIZE 100
struct Queue {
int items[QUEUE_SIZE];
int front;
int rear;
};
struct Queue* createQueue() {
struct Queue* q = (struct Queue*) malloc(sizeof(struct Queue));
q->front = -1;
q->rear = -1;
return q;
}
int isEmpty(struct Queue* q) {
return (q->front == -1 && q->rear == -1);
}
int isFull(struct Queue* q) {
return (q->rear + 1) % QUEUE_SIZE == q->front;
}
void enqueue(struct Queue* q, int item) {
if (isFull(q)) {
printf("Queue is full!");
return;
}
else if (isEmpty(q)) {
q->front = q->rear = 0;
}
else {
q->rear = (q->rear + 1) % QUEUE_SIZE;
}
q->items[q->rear] = item;
}
int dequeue(struct Queue* q) {
int item = 0;
if (isEmpty(q)) {
printf("Queue is empty!");
return item;
}
else if (q->front == q->rear) {
item = q->items[q->front];
q->front = q->rear = -1;
}
else {
item = q->items[q->front];
q->front = (q->front + 1) % QUEUE_SIZE;
}
return item;
}
int front(struct Queue* q) {
if (isEmpty(q)) {
printf("Queue is empty!");
return -1;
}
return q->items[q->front];
}
int size(struct Queue* q) {
if (isEmpty(q)) {
return 0;
}
return (q->rear + QUEUE_SIZE - q->front) % QUEUE_SIZE + 1;
}
int main() {
struct Queue* q = createQueue();
enqueue(q, 10);
enqueue(q, 20);
enqueue(q, 30);
printf("Queue front: %d\n", front(q));
printf("Queue size: %d\n", size(q));
dequeue(q);
printf("Queue front: %d\n", front(q));
printf("Queue size: %d\n", size(q));
dequeue(q);
printf("Queue front: %d\n", front(q));
printf("Queue size: %d\n", size(q));
dequeue(q);
printf("Queue front: %d\n", front(q));
printf("Queue size: %d\n", size(q));
return 0;
}
```
在这个实现中,我们使用一个结构体来表示队列,其中包括一个整型数组和两个指针 front 和 rear。createQueue() 函数用于创建队列,isEmpty() 和 isFull() 函数分别用于判断队列是否为空和是否已满。enqueue() 函数将元素插入到队列的尾部,dequeue() 函数则从队列的头部移除元素。front() 函数返回队列头部的元素,但是不移除它。size() 函数返回队列中元素的数量。
在 main() 函数中,我们创建了一个队列并进行了一系列操作,包括插入元素、移除元素、获取队列头部的元素和获取队列长度。