队列的基础操作
队列是一种特殊的线性表,只允许在表的前端进行删除操作,而在表的后端进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。
#define SIZE 5
typedef struct queue
{
int inner;
}Queue;
Queue a[SIZE];
Queue *head = NULL;
Queue *tail = NULL;
/*(1)初始化队列:Init_Queue(Queue *q) ,初始条件:队q 不存在。操作结果:构造了一个空队;
(2)入队操作: In_Queue(Queue *q, int x),初始条件: 队q 存在。操作结果: 对已存在的队列q,插入一个元素x 到队尾,队发生变化;
(3)出队操作: Out_Queue(Queue *q),初始条件: 队q 存在且非空,操作结果: 删除队首元素,并返回其值,队发生变化;
(4)读队头元素:Pop_Queue(Queue *q),初始条件: 队q 存在且非空,操作结果: 读队头元素,并返回其值,队不变;
(5)判队空操作:Empty_Queue(q),初始条件: 队q 存在,操作结果: 若q 为空队则返回为1,否则返回为0。*/
void Init_Queue(Queue *q)
{
head = q;
tail = q;
}
void In_Queue(Queue *q, int x)
{
if (q != NULL)
{
if (tail == &a[SIZE])
{
printf("The Queue is full filled.");
}
else
{
tail->inner = x;
tail++;
}
}
}
int Out_Queue(Queue *q)
{
int temp = 0;
if (head!=tail&&q!=NULL)
{
temp = head->inner;
head++;
}
else
{
printf("NULL");
}
return temp;
}
int Pop_Queue(Queue *q)
{
if (head != tail&&q != NULL)
{
return head->inner;
}
else
printf("NULL");
}
int Empty_Queue(Queue *q)
{
if (head == tail)
return 1;
else
return 0;
}
(。・∀・)ノ
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架