以下是源码
//链队列 #include<stdlib.h> #include<stdio.h> #include<iostream> typedef struct QNode { int data; struct QNode *next; } LNode, *LinkList; typedef struct { LinkList front; LinkList rear; }LinkQueue; int InitQueue(LinkQueue &Q) { Q.front=Q.rear=(LinkList)malloc(sizeof(LNode)); if(!Q.front) exit(-1); Q.front->next=NULL; return 1; } int QueueEmpty(LinkQueue Q) { if(Q.front==Q.rear) return 1; else return 0; } int EnQueue(LinkQueue &Q,int e) { LinkList p=(LinkList)malloc(sizeof(LNode)); if(!p) exit(-1); p->data=e; p->next=NULL; Q.rear->next=p; Q.rear=p; return 1; } int DeQueue(LinkQueue &Q,int &e) { if(Q.front==Q.rear) return 0; LinkList p=Q.front->next; e=p->data; Q.front->next=p->next; if(Q.rear==p) Q.rear=Q.front; free(p); return 1; } int main() { LinkQueue Q; int result = InitQueue(Q); if(result==1) printf("创建空链列表成功!\n"); if(QueueEmpty(Q)==1) printf("Q是一个空的链队列!\n"); else printf("Q是一个非空的链队列!\n"); printf("把10放进队列:\n"); EnQueue(Q,10); if(QueueEmpty(Q)==1) printf("Q是一个空的链队列!\n"); else printf("Q是一个非空的链队列!\n"); printf("把一个元素出队列\n"); int e; DeQueue(Q,e); printf("出队列的元素为%d\n",e); if(QueueEmpty(Q)==1) printf("Q是一个空的链队列!\n"); else printf("Q是一个非空的链队列!\n"); }