#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));//存在头指针的链式队列 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 Q.front=Q.rear; x=Q.front->next->data; Q.front->next=Q.front->next->next; free(p); return true; }
int main()
{
LinkQueue que;
InitQueue(que);
EnQueue(que,6);
EnQueue(que,3);
EnQueue(que,5);
int n;
DeQueue(que,n);
// 输出为2
printf("n=%d\n",n);
return 0;
}