首页 > 试题广场 >

设循环队列的结构是: const int Maxsize=1

[单选题]
设循环队列的结构是:
const int Maxsize=100; 
typedef int Data Type;
typedef struct {
    Data Type data[Maxsize];
    int front, rear;
}Queue;
若 一个 Queue 类型的队列 Q ,试问判断队列满的条件应是下列哪一个语句
  • Q.front==Q.rear;
  • Q.front-Q.rear==Maxsize;
  • Q.front+Q.rear=Maxsize;
  • Q.front==(Q.rear+1)%Maxsize;
请问这从什么地方看出是循环队列?
发表于 2017-12-02 00:04:05 回复(1)
更多回答
循环队列中,由于入队时尾指针向前追赶头指针;出队时头指针向前追赶尾指针,造成队空和队满时头尾指针均相等。因此,无法通过条件front==rear来判别队列是"空"还是"满"。
解决这个问题的方法至少有两种:
① 另设一布尔变量以区别队列的空和满;
②另一种方式就是数据结构常用的: 队满时:(rear+1)%n==front,n为队列长度(所用数组大小),由于rear,front均为所用空间的指针,循环只是逻辑上的循环,所以需要求余运算.
发表于 2017-03-08 17:17:17 回复(0)
入队时,rear加一,front不变
发表于 2019-11-18 11:14:46 回复(0)
?
发表于 2023-03-22 18:44:58 回复(0)

还是感觉题目模糊,改成Data Type date[Maxsize +1]就很好了

发表于 2019-09-01 22:39:35 回复(0)
d
发表于 2017-01-06 20:49:20 回复(1)