数据结构队列实案例c++
时间: 2023-11-05 17:04:32 浏览: 129
八种常见数据结构介绍和C++案例.docx
队列是一种先进先出(FIFO)的数据结构,常用于模拟排队等场景。下面是一个使用队列的实际案例:
假设我们有一个超市的收银台,需要处理顾客的结账请求。我们可以使用队列来模拟这个过程。当顾客来到收银台时,将其加入队列中,然后依次处理队列中的顾客,直到所有顾客都结账完成。
以下是使用C语言实现队列的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义队列结构
typedef struct {
int* array; // 存储数据的数组
int front; // 队头指针
int rear; // 队尾指针
int size; // 队列当前元素个数
int capacity; // 队列容量
} Queue;
// 初始化队列
void initializeQueue(Queue* queue, int capacity) {
queue->array = (int*)malloc(capacity * sizeof(int));
queue->front = 0;
queue->rear = -1;
queue->size = 0;
queue->capacity = capacity;
}
// 判断队列是否为空
int isEmpty(Queue* queue) {
return queue->size == 0;
}
// 判断队列是否已满
int isFull(Queue* queue) {
return queue->size == queue->capacity;
}
// 入队操作
void enqueue(Queue* queue, int item) {
if (isFull(queue)) {
printf("队列已满,无法入队!\n");
return;
}
queue->rear = (queue->rear + 1) % queue->capacity;
queue->array[queue->rear] = item;
queue->size++;
}
// 出队操作
int dequeue(Queue* queue) {
if (isEmpty(queue)) {
printf("队列为空,无法出队!\n");
return -1;
}
int item = queue->array[queue->front];
queue->front = (queue->front + 1) % queue->capacity;
queue->size--;
return item;
}
// 获取队头元素
int getFront(Queue* queue) {
if (isEmpty(queue)) {
printf("队列为空!\n");
return -1;
}
return queue->array[queue->front];
}
// 获取队尾元素
int getRear(Queue* queue) {
if (isEmpty(queue)) {
printf("队列为空!\n");
return -1;
}
return queue->array[queue->rear];
}
// 主函数测试
int main() {
Queue queue;
initializeQueue(&queue, 5);
enqueue(&queue, 1);
enqueue(&queue, 2);
enqueue(&queue, 3);
printf("队头元素:%d\n", getFront(&queue));
printf("队尾元素:%d\n", getRear(&queue));
dequeue(&queue);
dequeue(&queue);
printf("队头元素:%d\n", getFront(&queue));
printf("队尾元素:%d\n", getRear(&queue));
return 0;
}
```
这个示例展示了如何使用数组实现一个循环队列。我们首先定义了一个结构体 `Queue`,包含了队列的相关信息。然后通过相应的函数来实现入队、出队、获取队头元素等操作。
阅读全文