3.3.2 队列的存储表示和操作的实现 二、循环队列 bool EnQueue (Queue &Q,ElemType e) { // 若当前队列不满,这在当前队列的尾元素之后, // 插入元素 e 为新的队列尾元素,并返回TRUE,否则返回FALSE if ((Q.rear + 1) % Q.queuesize == Q.front ) return FALSE; Q.elem[Q.rear] = e; Q.rear = (Q.rear+1) % Q.queuesize; return TRUE; } |
|
|||||||||
int QueueLength (Queue Q) { // 返回队列Q中元素个数,即队列的长度 return ((Q.rear-Q.front+Q.queuesize) % Q.queuesize); } |
因为在循环队列中,队尾指针的"数值"有可能比队头指针的数值小,因此为避免在求队列长度两者相减时出现负值的情况,在作取模运算之前先加上一个最大容量的值。 |