使用C++设计一个队列操作类,然后用友元实现入队 和出队
时间: 2023-05-19 18:02:19 浏览: 114
1_C语言_假设以数组sequ_
5星 · 资源好评率100%
好的,我可以回答这个问题。以下是一个使用 C 语言设计的队列操作类,其中使用了友元实现入队和出队操作:
```
#include <stdio.h>
#include <stdlib.h>
#define MAX_QUEUE_SIZE 100
typedef struct {
int data[MAX_QUEUE_SIZE];
int front;
int rear;
} Queue;
void initQueue(Queue *q) {
q->front = q->rear = 0;
}
int isQueueEmpty(Queue *q) {
return q->front == q->rear;
}
int isQueueFull(Queue *q) {
return (q->rear + 1) % MAX_QUEUE_SIZE == q->front;
}
void enqueue(Queue *q, int value);
int dequeue(Queue *q);
void enqueue(Queue *q, int value) {
if (isQueueFull(q)) {
printf("Queue is full, cannot enqueue.\n");
return;
}
q->data[q->rear] = value;
q->rear = (q->rear + 1) % MAX_QUEUE_SIZE;
}
int dequeue(Queue *q) {
if (isQueueEmpty(q)) {
printf("Queue is empty, cannot dequeue.\n");
return -1;
}
int value = q->data[q->front];
q->front = (q->front + 1) % MAX_QUEUE_SIZE;
return value;
}
int main() {
Queue q;
initQueue(&q);
enqueue(&q, 1);
enqueue(&q, 2);
enqueue(&q, 3);
printf("%d\n", dequeue(&q));
printf("%d\n", dequeue(&q));
printf("%d\n", dequeue(&q));
printf("%d\n", dequeue(&q));
return 0;
}
```
在这个队列操作类中,我们定义了一个 Queue 结构体,其中包含一个数组 data 用于存储队列中的元素,以及 front 和 rear 两个指针分别指向队列的头部和尾部。我们还定义了一些函数来实现队列的基本操作,包括初始化队列、判断队列是否为空或已满、入队和出队。其中,enqueue 函数用于将元素插入队列尾部,dequeue 函数用于从队列头部取出元素。在主函数中,我们可以看到如何使用这个队列操作类来进行入队和出队操作。
希望这个回答能够帮助到你!
阅读全文