单选题
以下选项的叙述中,正确的是
A
在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况
B
在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况
C
循环队列中元素的个数是由队头指针和队尾指针共同决定
D
循环队列有队头和队尾两个指针,因此,循环队列是非线性结构
答案解析
正确答案:C
解析:
本题考查循环队列的基本结构与性质,核心在于理解循环队列的逻辑结构、存储实现方式及其指针作用。
逐项分析如下:
A:错误。
在循环队列中,仅靠队头指针(front)无法确定队列中元素的个数或动态变化情况。因为队头指针仅指示队首元素的存储位置,但无法反映队列长度或队尾位置;当队列为空或满时,仅凭 front 无法区分这两种状态(尤其在未设额外标记的情况下)。因此,单靠队头指针不能完整反映队列的动态变化。
B:错误。
同理,仅靠队尾指针(rear)也无法反映队列中元素的动态变化。rear 指示队尾元素的下一个插入位置(常见实现方式),但若不知 front 的位置,就无法计算当前元素个数,也无法判断队列是否为空或已满。例如,同一 rear 值可能对应不同长度的队列(因 front 可能位于不同位置)。
C:正确。
循环队列中元素的个数由队头指针(front)和队尾指针(rear)共同决定。在容量为 MAXSIZE 的顺序循环队列中,通常采用以下公式计算元素个数:
元素个数 = (rear − front + MAXSIZE) % MAXSIZE
该公式依赖于 front 和 rear 的相对位置及模运算,体现了二者共同刻画队列状态的本质。此外,判断队空(front == rear)和队满((rear + 1) % MAXSIZE == front)也均需同时考察两个指针。因此,队列中元素的动态变化(包括长度、存取状态)必须由 front 和 rear 共同反映。
D:错误。
循环队列虽有 front 和 rear 两个指针,但其逻辑结构仍是线性结构。线性结构的本质特征是数据元素之间存在“一对一”的前驱-后继关系,且所有元素可排成一个线性序列。循环队列只是队列的一种顺序存储实现方式,通过取模运算模拟逻辑上的“循环”,并未改变其线性逻辑关系。指针数量不决定逻辑结构类型;栈(一个栈顶指针)、普通队列(两个指针)均为线性结构。非线性结构如树、图等具有多对一或多对多的关系。
综上,唯一正确的叙述是 C。
核心知识点总结:
- 循环队列是队列的顺序存储结构,用于克服普通顺序队列的“假溢出”问题;
- front 指向队首元素,rear 指向队尾元素的下一个位置(主流约定);
- 队列长度、队空/队满判定均需 front 与 rear 共同参与;
- 循环队列的逻辑结构属于线性结构,与其物理存储的“循环”特性无关。
相关知识点:
循环队列元素,由头尾指针定
题目纠错





