队列的定义
#define MAXSIZE 100
typedef struct
{
int data[MAXSIZE];
int front;
int rear;
}SqQueue;
SqQueue sq;
初始化
void Initial(SqQueue *sq)
{
sq->front = 0;
sq->rear = 0;
}
判队空
int IsEmpty(SqQueue *sq)
{
if(sq.front == sq.rear)
return true;
else
return false;
}
判队满
int IsFull(SqQueue *sq)
{
if(sq->front==(sq->rear+1)%MAXSIZE)
return true;
else
return false;
}
长度
int length(SqQueue sq)
{
return (sq.rear-sq.front+MAXSIZE)%MAXSIZE;
}
返回列表的首元素
int Gethead(SqQueue *sq, int *e)
{
//先判队空
*e = sq.data[sq.front];
return true;
}
入队
int EnQueue(SqQueue *sq,int e)
{
sq->data[sq->rear] = e;
sq->rear = (sq->rear+1)%MAXSIZE;
return true;
}
出队
int DeQueue(SqQueue *sq,int *e)
{
//先判队空
*e = sq->data[sq->front];
sq->front = (sq->front+1)%MAXSIZE;
return true;
}
遍历队列
int QueueTraverse(SqQueue sq)
{
//先判队空
int i = sq.front;
while(i!=sq.rear)
{
printf("%d ",sq->data[i]);
i = (i+1)%MAXSIZE;
}
return true;
}