用c++实现队列的增删改查
时间: 2024-03-29 16:11:43 浏览: 125
c语言实现数据队列增删改查
以下是用C实现队列的增删改查的示例代码:
```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 = q->rear = 0;
}
// 判断队列是否为空
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 x) {
if (isFull(q)) {
printf("Queue is full.\n");
return;
}
q->data[q->rear] = x;
q->rear = (q->rear + 1) % MAX_SIZE;
}
// 出队操作
void dequeue(Queue *q) {
if (isEmpty(q)) {
printf("Queue is empty.\n");
return;
}
q->front = (q->front + 1) % MAX_SIZE;
}
// 取队头元素
int getFront(Queue *q) {
if (isEmpty(q)) {
printf("Queue is empty.\n");
return -1;
}
return q->data[q->front];
}
// 取队尾元素
int getRear(Queue *q) {
if (isEmpty(q)) {
printf("Queue is empty.\n");
return -1;
}
return q->data[(q->rear - 1 + MAX_SIZE) % MAX_SIZE];
}
// 打印队列元素
void printQueue(Queue *q) {
if (isEmpty(q)) {
printf("Queue is empty.\n");
return;
}
printf("Queue elements: ");
int i = q->front;
while (i != q->rear) {
printf("%d ", q->data[i]);
i = (i + 1) % MAX_SIZE;
}
printf("\n");
}
int main() {
Queue q;
initQueue(&q);
enqueue(&q, 1);
enqueue(&q, 2);
enqueue(&q, 3);
printQueue(&q);
printf("Front element: %d\n", getFront(&q));
printf("Rear element: %d\n", getRear(&q));
dequeue(&q);
printQueue(&q);
return 0;
}
```
阅读全文