定义队列结构体
typedef struct
{
ElemType data[MAXSIZE];
int front; //标识队头,用于出队
int rear; //标识队尾,用于入队
int size; //队列元素计数
}SqQueue;
入队
int In_SeQueue(c_SeQueue* q,datatype x)
{
if((q->rear+1)%MAXSIZE==q->front)//如果rear的下一位为front则队满
return ERROR;
else
{
q->data[q->rear]=x;
q->rear=(q->rear+1)% MAXSIZE;
return 1;
}
}
front指向队头,rear指向队尾部,均从0开始
rear=front时队列为空
当rear=MAXSIZE时队列为满
假如rear指向下标9,即最后一个元素(如下图)
front指向3,即第四个元素,队列前三个位置为空
想要再插入元素就必须让rear重新指向0下标
Q.rear=[Q.rear+1]=x //把x值赋给rear所在下标9
Q.rear=(Q.rear+1)%MAXSIZE;
rear+1是为了让rear指向下一个要插入的下标
//此时rear为最后一个元素的下标,再+1就=MAXSIZE