利用“数组”作为存储结构方法实现“队列”的基本操作,包括:创建队列、入队列、出队列、队列满、队列空等基本操作。
时间: 2023-12-04 14:04:51 浏览: 66
用数组实现队列的基本功能
好的,我来为你介绍如何利用数组实现队列基本操作。
队列是一种先进先出(FIFO)的数据结构,可以用数组实现。在使用数组实现队列时,需要定义两个指针,分别指向队列头和队列尾。队列头指针指向队列中第一个元素,队列尾指针指向下一个可插入元素的位置。
以下是实现队列的基本操作:
1. 创建队列
创建队列时需要指定队列的最大长度,通常使用一个数组来存储队列元素。
```
#define MAX_SIZE 10 // 队列最大长度
typedef struct {
int data[MAX_SIZE]; // 存储队列元素的数组
int front; // 队列头指针
int rear; // 队列尾指针
} Queue;
```
2. 入队列
入队列操作将一个元素插入队列尾部,需要将队列尾指针后移一位。
```
void enqueue(Queue *q, int x) {
if (is_full(q)) {
printf("Queue is full.\n");
return;
}
q->data[q->rear] = x;
q->rear = (q->rear + 1) % MAX_SIZE; // 队列尾指针后移一位
}
```
3. 出队列
出队列操作将队列头部的元素移除,并返回它的值,需要将队列头指针后移一位。
```
int dequeue(Queue *q) {
if (is_empty(q)) {
printf("Queue is empty.\n");
return -1;
}
int x = q->data[q->front];
q->front = (q->front + 1) % MAX_SIZE; // 队列头指针后移一位
return x;
}
```
4. 队列满
当队列的元素个数达到队列的最大长度时,队列就满了。
```
int is_full(Queue *q) {
return (q->rear + 1) % MAX_SIZE == q->front;
}
```
5. 队列空
当队列中没有元素时,队列就空了。
```
int is_empty(Queue *q) {
return q->front == q->rear;
}
```
这样,我们就可以利用数组实现队列基本操作了。
阅读全文