#include<stdio.h>
#include<stdlib.h>
typedef struct LinkNode
{
int data;
struct LinkNode *next;
} LinkNode;
typedef struct Link
{
LinkNode *front,*rear;//front rear为链表的伴随指针
} LinkQueue;
//初始化
void InitQueue(LinkQueue* &Q)
{
Q->front=Q->rear=(LinkNode*)malloc(sizeof(LinkNode));//存在头指针的链式队列
printf("%d\n",Q->front);
Q->front->next=NULL;
}
//判空
bool IsEmpty(LinkQueue* &Q)
{
if(Q->front==Q->rear) return true;
else return false;
}
//入队
void EnQueue(LinkQueue* &Q,int x)
{
LinkNode* s=(LinkNode*)malloc(sizeof(LinkNode));
s->data=x;
s->next=NULL;
Q->rear->next=s;//将新的节点插入
Q->rear=s;//rear指针后移
}
//出队
bool DeQueue (LinkQueue* &Q,int &x)
{
if(Q->front==Q->rear) return false;
LinkNode* p=Q->front->next;
if(p==Q->rear) return false;
x=Q->front->next->data;
Q->front->next=Q->front->next->next;
free(p);
return true;
}
int main()
{
LinkQueue que;
LinkQueue* link=&que;
InitQueue(link);
EnQueue(link,2);
EnQueue(link,3);
EnQueue(link,5);
int n;
DeQueue(link,n);
// 输出为2
printf("n=%d\n",n);
return 0;
}