c++ 队列的代码实现
时间: 2023-08-31 18:09:18 浏览: 40
队列是一种具有先进先出(FIFO)特性的数据结构,其中新元素被添加到队列的一端,而现有元素则从另一端移除。队列可以使用数组或链表来实现,以下是使用数组实现的队列代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
// 定义队列结构体
typedef struct {
int data[MAX_SIZE];
int front; // 队首指针
int rear; // 队尾指针
} Queue;
// 初始化队列
void initQueue(Queue *q) {
q->front = 0;
q->rear = 0;
}
// 判断队列是否为空
int isEmpty(Queue *q) {
return (q->front == q->rear);
}
// 判断队列是否已满
int isFull(Queue *q) {
return (q->rear == MAX_SIZE);
}
// 入队操作
void enqueue(Queue *q, int data) {
if (isFull(q)) {
printf("Queue is full\n");
return;
}
q->data[q->rear++] = data;
}
// 出队操作
int dequeue(Queue *q) {
if (isEmpty(q)) {
printf("Queue is empty\n");
return -1;
}
return q->data[q->front++];
}
// 打印队列元素
void printQueue(Queue *q) {
if (isEmpty(q)) {
printf("Queue is empty\n");
return;
}
printf("Queue: ");
for (int i = q->front; i < q->rear; i++) {
printf("%d ", q->data[i]);
}
printf("\n");
}
int main() {
Queue q;
initQueue(&q);
enqueue(&q, 1);
enqueue(&q, 2);
enqueue(&q, 3);
printQueue(&q); // 队列: 1 2 3
dequeue(&q);
printQueue(&q); // 队列: 2 3
enqueue(&q, 4);
printQueue(&q); // 队列: 2 3 4
return 0;
}
```
以上代码实现了队列的基本操作,包括队列的初始化、入队、出队、判断队列是否为空或已满以及打印队列元素。