pta题库答案c语言 队列的实现及基本操作
时间: 2024-10-10 18:02:09 浏览: 55
队列(Queue)是一种先进先出(First In First Out,FIFO)的数据结构,在C语言中可以使用数组或链表来实现。这里简单讲解一下基于数组的队列实现以及基本操作。
**数组队列实现:**
```c
typedef struct Queue {
int capacity; // 队列容量
int front, rear; // 队首(front)和队尾(rear)
int* elements; // 存储数据的数组
} Queue;
// 初始化队列
void initQueue(Queue* queue, int capacity) {
queue->capacity = capacity;
queue->front = -1;
queue->rear = -1;
queue->elements = (int*)malloc(capacity * sizeof(int));
}
// 入队(enqueue)
void enqueue(Queue* queue, int data) {
if (queue->rear == (queue->front + queue->capacity - 1) % queue->capacity) { // 判断队满
printf("Queue is full.\n");
return;
}
queue->rear = (queue->rear + 1) % queue->capacity; // 避免数组越界
queue->elements[queue->rear] = data;
}
// 出队(dequeue)
int dequeue(Queue* queue) {
if (queue->front == queue->rear) { // 判断队空
printf("Queue is empty.\n");
return -1;
}
int data = queue->elements[queue->front];
queue->front = (queue->front + 1) % queue->capacity;
return data;
}
```
**基本操作:**
1. `initQueue()`:初始化一个新的队列,分配内存空间。
2. `enqueue(data)`:将元素添加到队尾。
3. `dequeue()`:从队头移除并返回第一个元素,如果队列为空则返回-1。
**相关问题--:**
1. 如何检查队列是否为空或已满?
2. 如果需要删除队列,应该如何操作?
3. C语言中链式队列的实现有何不同?
阅读全文