假设一个队列的存储空间大小为5,初始为空。现依次进行如下操作:入队a、b、c、d、e,然后进行两次出队操作,之后再入队f、g,最后再进行一次出队操作。此时,队列中队头元素和队尾元素分别为?
答案解析
核心考点说明:本题考察队列的先进先出特性,以及循环队列(虽然题目中没有明确说明,但根据空间大小限制,需要考虑循环)的概念和操作。需要根据入队和出队操作动态地更新队头和队尾指针。
解题思路分析:按顺序模拟队列操作。当队列满时,再次入队会覆盖队头元素(模拟循环队列)。出队操作后,队头指针移动到下一个元素。需要仔细跟踪每次操作后的队头和队尾元素。
每个选项的详细分析:
- A. 选项队头为c,队尾为g: 初始队列为空,入队a、b、c、d、e后队列满,此时队头为a,队尾为e。两次出队后,队头指向c。入队f、g后,由于空间有限,会覆盖掉a、b。最后一次出队,队头移动到d。此选项错误,队头应为d。
- B. 选项队头为d,队尾为g: 根据分析,队头应为d,但由于入队f、g是覆盖,所以队尾应为g,该选项正确。
- C. 选项队头为c,队尾为f: 根据分析,队头应为d,队尾应为g。选项错误,队头和队尾都不对。
- D. 选项队头为d,队尾为f: 队头分析正确,但队尾分析错误,队尾应为g。
易错点提醒:需要注意到队列空间有限,形成循环队列的可能性。入队操作会覆盖队头元素,而出队会移动队头指针,要仔细跟踪变化。另外需要考虑,队列满时如果继续入队,需要将之前的元素覆盖掉。
正确答案的关键依据:根据队列的FIFO特性和存储空间限制,分析出队操作和覆盖入队操作后的队头和队尾元素。
错误选项的具体问题:A选项错误在于混淆了最后一次出队操作后的队头;C和D选项错误在于混淆了最终队头和队尾。
正确答案:B