用C++实现一个队列结构体
时间: 2024-05-02 13:20:43 浏览: 95
好的,这个问题属于计算机编程领域,我可以为您解答。
以下是用 C 实现的队列结构体示例代码:
```
#include <stdio.h>
#include <stdlib.h>
#define MAX_QUEUE_SIZE 10
typedef struct {
int front; // 队头指针
int rear; // 队尾指针
int size; // 队列大小
int array[MAX_QUEUE_SIZE]; // 队列数组
} Queue;
// 初始化队列
void initQueue(Queue *q) {
q->front = q->rear = q->size = 0;
}
// 判断队列是否为空
int isQueueEmpty(Queue *q) {
return q->size == 0;
}
// 判断队列是否已满
int isQueueFull(Queue *q) {
return q->size == MAX_QUEUE_SIZE;
}
// 入队
void enqueue(Queue *q, int val) {
if (isQueueFull(q)) {
printf("The queue is full, cannot add new element.\n");
return;
}
q->array[q->rear] = val;
q->rear = (q->rear + 1) % MAX_QUEUE_SIZE; // 循环队列
q->size++;
}
// 出队
int dequeue(Queue *q) {
if (isQueueEmpty(q)) {
printf("The queue is empty, cannot remove element.\n");
exit(1);
}
int val = q->array[q->front];
q->front = (q->front + 1) % MAX_QUEUE_SIZE; // 循环队列
q->size--;
return val;
}
// 取队头元素
int getFront(Queue *q) {
if (isQueueEmpty(q)) {
printf("The queue is empty, cannot get front element.\n");
exit(1);
}
return q->array[q->front];
}
// 取队尾元素
int getRear(Queue *q) {
if (isQueueEmpty(q)) {
printf("The queue is empty, cannot get rear element.\n");
exit(1);
}
return q->array[(q->rear - 1 + MAX_QUEUE_SIZE) % MAX_QUEUE_SIZE];
}
int main() {
Queue q;
initQueue(&q);
enqueue(&q, 1);
enqueue(&q, 2);
enqueue(&q, 3);
printf("Dequeued element: %d\n", dequeue(&q));
printf("Front element: %d\n", getFront(&q));
printf("Rear element: %d\n", getRear(&q));
return 0;
}
```
希望这个示例代码能够帮助您实现队列结构体。
阅读全文