C语言实现队列操作:入队和出队
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 5
typedef struct Queue {
int data[MAX_SIZE];
int front; // 队头指针
int rear; // 队尾指针
} Queue;
// 初始化队列
void initQueue(Queue *queue) {
queue->front = queue->rear = 0;
}
// 判断队列是否为空
int isQueueEmpty(Queue *queue) {
return queue->front == queue->rear;
}
// 判断队列是否已满
int isQueueFull(Queue *queue) {
return (queue->rear + 1) % MAX_SIZE == queue->front;
}
// 入队
void enQueue(Queue *queue, int data) {
if (isQueueFull(queue)) {
printf('队列已满,无法入队!\n');
return;
}
queue->data[queue->rear] = data;
queue->rear = (queue->rear + 1) % MAX_SIZE;
}
// 出队
int deQueue(Queue *queue) {
if (isQueueEmpty(queue)) {
printf('队列已空,无法出队!\n');
return -1;
}
int data = queue->data[queue->front];
queue->front = (queue->front + 1) % MAX_SIZE;
return data;
}
int main() {
Queue queue;
initQueue(&queue);
int i, data;
printf('请输入5个数字,以空格分隔:\n');
for (i = 0; i < MAX_SIZE; i++) {
scanf('%d', &data);
enQueue(&queue, data);
}
printf('出队的元素依次为:');
while (!isQueueEmpty(&queue)) {
printf('%d ', deQueue(&queue));
}
printf('\n');
return 0;
}
原文地址: https://www.cveoy.top/t/topic/nIt2 著作权归作者所有。请勿转载和采集!