#include <stdio.h>
#include <stdlib.h>
/******************************************************************
*author@zs *
*date@2019-10-05 *
*desc@Sequential queue *
*******************************************************************/
typedef int Datatype;
#define QueueSize 40
typedef struct Squeue
{
Datatype queue[QueueSize];
int front,rear;
}SeqQueue;
/**队列初始化**/
void InitQueue(SeqQueue *SQ)
{
SQ->front=0;
SQ->rear=0;
}
/**队列判空**/
int EmptyQueue(SeqQueue SQ)
{
if(SQ.front==SQ.rear) return 1;
else return 0;
}
/**入队**/
int EnterQueue(SeqQueue *SQ,Datatype x)
{
if(SQ->rear==QueueSize-1)
{
return 0;
}
else
{
SQ->queue[SQ->rear]=x;
SQ->rear+=1;
}
return 1;
}
/**出队**/
int DeleteQueue(SeqQueue *SQ,Datatype *e)
{
if(SQ->front==SQ->rear) return 0;
else
*e=SQ->queue[SQ->front];
SQ->front+=1;
return 1;
}
int main(void)
{
SeqQueue Q;
int arr[]={1,2,3,4,5,6,7,8,9};
//初始化队列
InitQueue(&Q);
//入队
int i;
for(i=0;i<sizeof(arr)/sizeof(int);i++)
{
EnterQueue(&Q,arr[i]);
}
//打印队列
if(!EmptyQueue(Q))
{
for(i=Q.front;i<Q.rear;i++)
{
printf("%d ",Q.queue[i]);
}
}
printf("\n");
//出队
int x=0;
DeleteQueue(&Q,&x);
printf("出队:%d\n",+x);
DeleteQueue(&Q,&x);
printf("出队:%d\n",+x);
//打印队列
if(!EmptyQueue(Q))
{
for(i=Q.front;i<Q.rear;i++)
{
printf("%d ",Q.queue[i]);
}
}
printf("\n");
system("pause");
return 0;
}