利用“数组”作为存储结构方法实现“队列”的基本操作,包括:创建队列、入队列、出队列、队列满、队列空等基本操作。 c语言实现
时间: 2023-12-02 16:03:17 浏览: 58
用数组实现队列的基本功能
以下是基于数组实现队列的 C 语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 10
int queue[MAX_SIZE];
int front = 0;
int rear = -1;
int itemCount = 0;
// 创建队列
void createQueue() {
front = 0;
rear = -1;
itemCount = 0;
}
// 入队列
void enqueue(int data) {
if(itemCount >= MAX_SIZE) {
printf("队列已满,无法插入元素\n");
return;
}
if(rear == MAX_SIZE - 1) {
rear = -1;
}
queue[++rear] = data;
itemCount++;
}
// 出队列
int dequeue() {
if(itemCount == 0) {
printf("队列为空,无法删除元素\n");
return -1;
}
int data = queue[front++];
if(front == MAX_SIZE) {
front = 0;
}
itemCount--;
return data;
}
// 队列是否为空
int isEmpty() {
return itemCount == 0;
}
// 队列是否已满
int isFull() {
return itemCount == MAX_SIZE;
}
// 获取队首元素
int peek() {
return queue[front];
}
// 获取队尾元素
int rearPeek() {
return queue[rear];
}
int main() {
createQueue();
enqueue(10);
enqueue(20);
enqueue(30);
enqueue(40);
enqueue(50);
printf("队首元素为:%d\n", peek());
printf("队尾元素为:%d\n", rearPeek());
printf("出队列元素为:%d\n", dequeue());
printf("出队列元素为:%d\n", dequeue());
printf("队列是否为空:%d\n", isEmpty());
printf("队列是否已满:%d\n", isFull());
return 0;
}
```
在该代码中,我们使用 `MAX_SIZE` 宏定义来表示队列的最大容量,使用 `queue` 数组来存储队列元素,使用 `front` 和 `rear` 分别表示队列的队首和队尾的下标,使用 `itemCount` 来记录队列中元素的个数。
`createQueue()` 函数用于创建队列,将 `front`、`rear` 和 `itemCount` 初始化为初始值。
`enqueue(int data)` 函数用于入队列,首先检查队列是否已满,如果已满则输出错误信息并返回;如果 `rear` 已经达到数组的最大下标,则将其重置为 `-1`,然后将 `data` 插入到 `queue[++rear]` 中,最后将 `itemCount` 加一。
`dequeue()` 函数用于出队列,首先检查队列是否为空,如果为空则输出错误信息并返回 `-1`;否则将队首元素 `queue[front++]` 返回,将 `front` 加一,如果 `front` 已经达到数组的最大下标,则将其重置为 `0`,最后将 `itemCount` 减一。
`isEmpty()` 函数用于判断队列是否为空,如果队列中元素个数为 `0`,则返回 `1`,否则返回 `0`。
`isFull()` 函数用于判断队列是否已满,如果队列中元素个数等于 `MAX_SIZE`,则返回 `1`,否则返回 `0`。
`peek()` 函数用于获取队首元素,直接返回 `queue[front]` 即可。
`rearPeek()` 函数用于获取队尾元素,直接返回 `queue[rear]` 即可。
在 `main()` 函数中,我们先调用 `createQueue()` 函数创建队列,然后使用 `enqueue()` 函数向队列中插入元素,使用 `peek()` 和 `rearPeek()` 函数分别获取队首和队尾元素,使用 `dequeue()` 函数出队列,最后使用 `isEmpty()` 和 `isFull()` 函数分别判断队列是否为空和已满,输出结果。
阅读全文