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