#include<iostream>
#include<stdlib.h>
typedef int ElemType;
struct LNode
{
ElemType data;
LNode* next;
};
struct LinkQueue
{
LNode* front;
LNode* rear;
};
void InitQueue(LinkQueue& HQ)
{
HQ.front = HQ.rear = NULL;
}
void EnQueue(LinkQueue& HQ, ElemType item)
{
LNode* newptr = new LNode;
newptr->data = item;
newptr->next = NULL;
if (HQ.rear == NULL)
HQ.front = HQ.rear = newptr;
else
HQ.rear = HQ.rear->next = newptr;
}
ElemType OutQueue(LinkQueue& HQ)
{
if (HQ.front == NULL)
{
std::cerr << "链队为空,无法删除!" << std::endl;
exit(1);
}
ElemType temp = HQ.front->data;
LNode* p = HQ.front;
HQ.front = p->next;
if (HQ.front == NULL)
HQ.rear = NULL;
delete p;
return temp;
}
ElemType PeekQueue(LinkQueue& HQ)
{
if (HQ.front == NULL)
{
std::cerr << "链队为空无队首元素!" << std::endl;
exit(1);
}
return HQ.front->data;
}
bool EmptyQueue(LinkQueue& HQ)
{
return HQ.front == NULL;
}
void ClearQueue(LinkQueue& HQ)
{
LNode* p = HQ.front;
while (p != NULL)
{
HQ.front = HQ.front->next;
delete p;
p = HQ.front;
}
HQ.rear = NULL;
}队列的链队子函数
最新推荐文章于 2024-09-08 09:00:00 发布
这篇博客详细介绍了如何使用链式结构实现队列,包括初始化队列、入队、出队、查看队首元素、判断队列是否为空以及清空队列等基本操作。代码示例使用C++编写,通过动态内存分配创建节点,并提供了相应的错误处理机制。
1万+

被折叠的 条评论
为什么被折叠?



