#include<stdio.h>
#include<stdlib.h>
#define maxsize 5
struct nodeq{
int data[maxsize];
int rear;
int front;
int flag;//标志是满还是空 最大限度利用data数组的空间
};
typedef struct nodeq *queque;
int isfull(queque ptrq)
{
if(((ptrq->rear)%maxsize==ptrq->front)&&ptrq->flag==1//1为满)
{
return true;
}
else
{
return false;
}
}//是否满
int isempty(queque ptrq)
{
if((ptrq->front==ptrq->rear)&&ptrq->flag==0//0为空)
{
return true;
}
else
{
return false;
}
}//是否空
int addq(queque ptrq,int item)
{
if(isfull(ptrq))
{
printf("列已满\n");
return 0;
}
else
{
ptrq->flag=1;
ptrq->rear=(ptrq->rear)%maxsize;
ptrq->data[ptrq->rear]=item;
ptrq->rear++;
}
} //后加入
int putq(queque ptrq)
{
if(isempty(ptrq))
{
printf("列已空\n");
return NULL;
}
else
{
ptrq->flag=0;
ptrq->front=(ptrq->front)%maxsize;
return ptrq->data[ptrq->front++];
}
}//前取出
int show(queque ptrq)
{
for(int i=ptrq->front;i<ptrq->rear;i++)
{
printf("%d\n",ptrq->data[i]);
}
}//打印
queque createq(queque ptrq)
{
ptrq=(queque)malloc(sizeof(struct nodeq));
ptrq->front=ptrq->rear=0;
return ptrq;
}//初始化
int main()
{
int isfull(queque ptrq);
int isempty(queque ptrq);
int addq(queque ptrq,int item);
int putq(queque ptrq);
int show(queque ptrq);
queque createq(queque ptrq);
queque q;
q=createq(q);
/*addq(q,3);
addq(q,4);
addq(q,5);
addq(q,6);
addq(q,7);
putq(q);
putq(q);
putq(q);
putq(q);
int i=putq(q);
printf("%d",i);
show(q);试验*/
free(q);//释放空间
return 0;
}