栈是限定在表尾进行插入和删除的操作的线性表;
队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表;
队列满的条件是 (rear + 1)%queuesize == front;
队列长度公式为 (rear - front + queuesize)%queuesize
rear为队尾front为队头;
初始化一个空队列
{
q->front = 0;
q->rear = 0;
return success;
}
若队列未满,则插入元素e为q新的队尾元素
{
If ((q->rear + 1)%maxsize == q->front) //队列满的判断
return failure;
q->data[q->rear] = e; //将元素e复制给队尾
q->rear = (q->rear + 1)%maxsize; //rear指针向后移一位
//若到最后则转到数组头部
return success;
}
若队列不空,则删除q中的队头元素,用e返回其值
{
If(q->front == q->rear) //队列空的判断
Return failure;
*e = q->data[q->front];
q->front = (q->front + 1)%maxsize //front指针向后移一位
//若到最后则转到头部
Return success;
}