学习地址:http://blog.csdn.net/stpeace/article/details/8131634
#include<iostream>
using namespace std;
typedef struct QNode
{
int data;
struct QNode *next;
}QNode;
typedef struct
{
QNode *front;
QNode *rear;
}LQode,*PQueue; //链式队列类型定义
void initQueue(LQueue *&lqu)
{
lqu=new LQueue;
lqu->front=lqu->rear=NULL;//当队列中油一个元素时,front和rear指针都指向这个元素,没有元素时则都指向NULL
}
int QueueEmpty(LQueue *lqu)
{
if(lqu->rear==NULL||lqu->front==NULL)
return 1;
else
return 0;
return 2;
}
void enQueue(LQueue *lqu,int x)
{
QNode *p;//节点指针
p=new QNode;
p->data=x;
p->next=NULL;
if(lqu->rear==NULL)
{
lqu->front=lqu->rear=p;//是空,则他们都指向新建的节点
}
else
{
lqu->rear->next=p;//先连接带队尾
lqu->rear=p;
}
}
int deQueue(LQueue *lqu,int &x)
{
QNode *p;
if(lqu->rear==NULL)
{
return 0;
}
else
{
p=lqu->front;
}
if(lqu->front==lqu->rear)
{
lqu->front=lqu->rear=NULL;
}
else
{
lqu->front=lqu->front->next;//后移
}
x=p->data;
delete p;
return 1;
}
int main()
{
PQueue PQueue1;
initQueue(PQueue1);
QueueEmpty(PQueue1);
int a=3;
enQueue(PQueue1,a);
int b=0;
deQueue(PQueue1,b);
QueueEmpty(PQueue1);
return 0;
}