当元素填到数组的最后一个位置时,顺序栈可以分配新的空间,但此时队列却未必被填满,这就造成空间的浪费,由此我们采用循环队列。
但是采用循环队列有一个缺点就是不能分配新的空间,所以采用循环队列时应分配足够的空间,否则应该采用链队列。
队列满的条件:
只凭等式Q.front = Q.rear无法判断队列是空还是满。
解决办法:
少用一个元素空间,当尾指针的下一个位置是头指针时,队列满,
也就是 (Q.rear + 1) % maxqsize == Q.front 时队列满。
当元素填到数组的最后一个位置时,顺序栈可以分配新的空间,但此时队列却未必被填满,这就造成空间的浪费,由此我们采用循环队列。
但是采用循环队列有一个缺点就是不能分配新的空间,所以采用循环队列时应分配足够的空间,否则应该采用链队列。
队列满的条件:
只凭等式Q.front = Q.rear无法判断队列是空还是满。
解决办法:
少用一个元素空间,当尾指针的下一个位置是头指针时,队列满,
也就是 (Q.rear + 1) % maxqsize == Q.front 时队列满。