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