用c语言写“数组”作为存储结构方法实现“队列”的基本操作,包括:创建队列、入 队列、出队列、队列满、队列空等基本操作的程序
时间: 2023-12-21 17:03:02 浏览: 62
下面是用 C 语言实现队列的基本操作:
```
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 10 // 队列的最大长度
typedef struct {
int data[MAXSIZE];
int front; // 队头指针
int rear; // 队尾指针
} Queue;
// 创建队列
Queue *createQueue() {
Queue *queue = (Queue *) malloc(sizeof(Queue));
queue->front = -1;
queue->rear = -1;
return queue;
}
// 判断队列是否为空
int isEmpty(Queue *queue) {
return queue->front == -1;
}
// 判断队列是否已满
int isFull(Queue *queue) {
return (queue->rear + 1) % MAXSIZE == queue->front;
}
// 入队列
void enqueue(Queue *queue, int element) {
if (isFull(queue)) {
printf("Queue is full.\n");
return;
}
if (isEmpty(queue)) {
queue->front = 0;
}
queue->rear = (queue->rear + 1) % MAXSIZE;
queue->data[queue->rear] = element;
}
// 出队列
int dequeue(Queue *queue) {
if (isEmpty(queue)) {
printf("Queue is empty.\n");
return -1;
}
int element = queue->data[queue->front];
if (queue->front == queue->rear) {
queue->front = -1;
queue->rear = -1;
} else {
queue->front = (queue->front + 1) % MAXSIZE;
}
return element;
}
int main() {
Queue *queue = createQueue();
enqueue(queue, 1);
enqueue(queue, 2);
enqueue(queue, 3);
printf("Dequeued element: %d\n", dequeue(queue));
printf("Dequeued element: %d\n", dequeue(queue));
printf("Dequeued element: %d\n", dequeue(queue));
printf("Dequeued element: %d\n", dequeue(queue));
return 0;
}
```
在上面的代码中,我们使用了数组作为队列的存储结构,使用 front 和 rear 两个指针来表示队头和队尾。其中,front 和 rear 的初始值都为 -1,表示队列为空。当队列中插入元素时,rear 指针向后移动一个位置;当队列中删除元素时,front 指针向后移动一个位置。需要注意的是,当 front 和 rear 相等时,队列为空;当 rear 指针移动到数组的最后一位时,队列已满。
阅读全文