有头节点
#includetypedef long long ll; const ll INF=0x3f3f3f; typedef struct LinkNode{ int data; struct LinkNode* next; }LinkNode; typedef struct LinkQueue{ LinkNode* front; LinkNode* rear; }LinkQueue; LinkQueue* InitQueue() { LinkQueue* Q=(LinkQueue*)malloc(sizeof(LinkQueue));; Q->front=Q->rear=(LinkNode*)malloc(sizeof(LinkNode)); Q->front->next=NULL; return Q; } int IsEmpty(LinkQueue* Q) { int flag=0; if(Q->front=Q->rear) flag=1; return flag; } void EnQueue(LinkQueue* Q, int x) { LinkNode* s=(LinkNode*)malloc(sizeof(LinkNode)); s->next=NULL; s->data=x; Q->rear->next=s; Q->rear=s; } int DeQueue(LinkQueue* Q) { if(Q->front==Q->rear) return INF; else { int x; LinkNode* s=Q->front->next; x=s->data; Q->front->next=s->next; if(Q->rear==s) Q->rear=Q->front; free(s); return x; } } int main() { LinkQueue* Q=InitQueue(); int x; int n=3; for(int i=0;i scanf("%d", &x); EnQueue(Q, x); } for(int i=0;i x=DeQueue(Q); printf("%dn", x); } return 0; }
无头节点
#includetypedef struct LinkNode { int data; struct LinkNode* next; } LinkNode; typedef struct LinkQueue { struct LinkNode* front; struct LinkNode* rear; } LinkQueue; LinkQueue* InitQueue() { LinkQueue* Q=(LinkQueue*)malloc(sizeof(LinkQueue)); Q->front=NULL; Q->rear=NULL; return Q; } void EnQueue(LinkQueue* Q, int x) { LinkNode* s=(LinkNode*)malloc(sizeof(LinkNode)); s->data=x; s->next=NULL; if(Q->front==NULL) Q->front=s; else Q->rear->next=s; Q->rear=s; } int DeQueue(LinkQueue* Q) { int x=-1111; if(Q->rear==NULL) return x; else { LinkNode* s=(LinkNode*)malloc(sizeof(LinkNode)); s=Q->front; x=s->data; if(Q->front==Q->rear) Q->front=Q->rear=NULL; else Q->front=s->next; free(s); } return x; } int main() { LinkQueue* Q=InitQueue(); int n=3; for(int i=0; i int x; scanf("%d", &x); EnQueue(Q, x); } for(int i=0; i int x=DeQueue(Q); printf("%dn", x); } return 0; }



