#define maxsize 5#include <stdio.h>#include <alloc.h> typedef struct{ int data[maxsize]; int front; int rear;}SqQueue; void InitQueue(SqQueue *&q){ q=(SqQueue*)malloc(sizeof(SqQueue));//有志向拉 q->front=q->rear=0;} void ClearQueue(SqQueue *&q){ free(q);} int EnQueue(SqQueue *&q,int &e){ if((q->rear+1)%maxsize==q->front) { printf("队列满了\n",e); return 0;//队满 } q->rear=(q->rear+1)%maxsize; q->data[q->rear]=e; return 1;} int ouQueue(SqQueue *&q,int &e){ if((q->rear==q->front)) { printf("队列为空\n",e); return 0;//队空 } q->front=(q->front+1)%maxsize; e=q->data[q->front]; printf("出队元素是%d\n",e); return 1;} void Show(SqQueue *&q){ int i=0; for(i=0;i<((q->rear-q->front+maxsize)%maxsize);i++) printf("%d ",q->data[(q->front+1+i)%maxsize]);//比较好 循环的就利用求鱼} int main(int argc, char* argv[]){ SqQueue *q; int a=100,e; while(a!=0) { printf("选择操作1:INIT 2:IN 3:OUT 4:Show 5:Clear\n"); scanf("%d",&a); switch(a) { case 1:InitQueue(q);printf("队列已建立\n");break; case 2:printf("输入入队元素\n");scanf("%d",&e);EnQueue(q,e);break; case 3:ouQueue(q,e);break; case 4:Show(q);printf("\n");break; case 5:ClearQueue(q);break; } } return 0;}

评论