#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; }