#include #define OK 1 #define ERROR 0 typedef struct QNode { int data; struct QNode *next; }QNode, *QueuePtr; typedef struct { QueuePtr front; QueuePtr rear; }LinkQueue; Status InitQueue(LinkQueue &Q) { Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode)); if(!Q.front) exit(OVERFLOW); Q.front->next=NULL; return OK; } Status QueueEmpty(LinkQueue Q) { if(Q.front==Q.rear) return OK; else return ERROR; } int QueueLength(LinkQueue Q) { int i=0; QueuePtr p; p=Q.front; while(Q.rear!=p) { i++; p=p->next; } printf(\"该队列长度为%d\ return i; } Status EnQueue(LinkQueue &Q,int e) { QueuePtr p; p=(QueuePtr)malloc(sizeof(QNode)); if(!p) exit(OVERFLOW); p->data=e; p->next=NULL; Q.rear->next=p; Q.rear=p; return OK; } Status DeQueue(LinkQueue &Q,int &e) { QueuePtr p; if(Q.front==Q.rear) return ERROR; p=Q.front->next; e=p->data; Q.front->next=p->next; if(Q.rear==p) Q.rear=Q.front; free(p); return OK; } void main () { int d,i; LinkQueue Q; int operate; for(;;) { printf(\"请选择操作:初始化(1),插入(2),删除(3),长度(4),为空(5),退出(0)\\n\"); scanf(\"%d\ switch(operate) { case 1: if(InitQueue(Q)==OK) printf(\"初始化成功:\\n\"); } } break; case 2: int t; printf(\"请输入要插入的元素:\\n\"); scanf(\"%d\ EnQueue(Q,t); printf(\"插入的元素是%d\\n\ break; case 3: DeQueue(Q,d); printf(\"删除的元素%d\\n\ break; case 4: QueueLength(Q); //printf(\"该队列长度为%d\ break; case 5: if(QueueEmpty(Q)==OK) printf(\"队列为空队列\\n\"); else printf(\"队列不为空队列\\n\"); break; } 因篇幅问题不能全部显示,请点此查看更多更全内容