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

评论