#include <iostream>
using namespace std;
typedef struct QNode
{
int data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct
{
QueuePtr front;
QueuePtr rear;
}LinkQueue;
void InitQueue(LinkQueue &Q)//初始化队列,构造一个空队列
{
Q.front = Q.rear =new QNode;
Q.front->next = NULL;
}
void EnQueue(LinkQueue &Q,int e) //链队的入队,插入元素e为队列新的队尾元素
{
QNode *p = new QNode;
p->data = e;
p->next = NULL;
Q.rear->next = p;
Q.rear = p;
}
bool IsEmpty(LinkQueue &Q)//判空
{
if(Q.front == Q.rear)
return true;
return false;
}
bool DeQueue(LinkQueue &Q,int &e)//出队,队头元素出队,并用e返回其值
{
if(IsEmpty(Q))
return false;
QNode *p = Q.front->next;
e=p->data;
Q.front->next = p->next;
if(Q.rear == p)
Q.rear = Q.front;
delete p;
return true;
}
bool QueueTraverse(LinkQueue &Q)//遍历
{
if(IsEmpty(Q))
return false;
QNode *p = Q.front->next;
while(p!=NULL)
{
cout<<p->data<<endl;
p=p->next;
}
return true;
}
int main()
{
LinkQueue k;
InitQueue(k);
EnQueue(k,3);
EnQueue(k,5);
EnQueue(k,7);
QueueTraverse(k);
cout<<endl<<IsEmpty(k)<<endl<<endl;
QNode *p = k.front;
while(p!=NULL)
{
int e;
DeQueue(k,e);
cout<<e<<endl;
p=p->next;
}
cout<<endl<<IsEmpty(k)<<endl<<endl;
}
链队
最新推荐文章于 2023-04-24 15:40:14 发布