C语言版循环队列
#ifndef QUEUE
#define QUEUE
#define maxsize 4
typedef struct {
int data[maxsize];
int front;
int rear;
}*Queue, Node;
#endif
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
void initQueue(Queue queue)
{
queue->front = 0;
queue->rear = 0;
}
bool isEmpty(Queue queue)
{
if (queue->front == queue->rear) {
return true;
}
return false;
}
bool isFull(Queue queue)
{
if ((queue->rear + 1) % maxsize == queue->front) {
return true;
}
return false;
}
bool Enqueue(Queue queue, int num)
{
if (isFull(queue)) {
return false;
}
queue->data[queue->rear] = num;
queue->rear = (queue->rear + 1) % maxsize;
return true;
}
bool Dequeue(Queue queue, int *x)
{
if (isEmpty(queue)) {
return false;
}
*x = queue->data[queue->front];
queue->front = (queue->front + 1) % maxsize;
return true;
}
int QueueLength(Queue queue)
{
return (queue->rear - queue->front + maxsize) % maxsize;
}
int main(void)
{
Queue queue;
queue = (Queue)malloc(sizeof(Node));
initQueue(queue);
int choose;
bool flag = true;
while (flag) {
printf("请输入您要进行的操作:\n1:入队\n2.出队\n");
scanf("%d", &choose);
if (choose == 1) {
int num;
printf("请输入您要入队的数据:");
scanf("%d", &num);
if (Enqueue(queue, num)) {
printf("%d入队成功!\n", num);
}
else {
puts("入队失败");
}
puts("--------------------");
}
else
{
int num;
if (Dequeue(queue, &num)) {
printf("%d已出队列\n", num);
}
else {
puts("出队失败");
}
puts("---------------------");
}
printf("长度:%d\n", QueueLength(queue));
}
}
输出结果