#include <stdio.h>
/*
实现一个循环队列
*/
#define SIZE 10
#define FULL (~0 - 1)
#define EMPTY (~0 - 2)
static int ring_queue[SIZE];
static int head = 0, tail = 0;
#define IS_EMPTY() (head == tail)
#define IS_FULL() (((tail + 1) % SIZE) == head)
static int enqueue(int val)
{
int ret = FULL;
if (!IS_FULL())
{
tail = (tail + 1) % SIZE;
ring_queue[tail] = val;
ret = 0;
}
return ret;
}
static int dequeue(void)
{
int ret = EMPTY;
if (!IS_EMPTY())
{
head = (head + 1) % SIZE;
ret = ring_queue[head];
}
return ret;
}
int main(void)
{
int i = 0;
for (i = 0; i < 20; i++)
{
int ret = enqueue(i + 1);
if (ret == FULL)
{
printf("queue is full!\n");
break;
}
else
{
printf("enqueue: %d\n", i + 1);
}
}
do
{
int ret = dequeue();
if (ret == EMPTY)
{
printf("queue is empty!\n");
break;
}
else
{
printf("dequeue %d\n", ret);
}
} while (1);
return 0;
}
实现一个简单的循环队列
于 2023-01-21 19:48:45 首次发布
该代码示例展示了如何在C语言中实现一个循环队列,包括队列满(FULL)和队列空(EMPTY)的定义、入队(enqueue)和出队(dequeue)操作。程序会进行一系列的入队和出队操作,直到队列满或空。
摘要由CSDN通过智能技术生成