设循环队列Q的定义中有rear和size两个域变量,其中,rear指示队尾元素之

免费题库2022-08-02  41

问题 设循环队列Q的定义中有rear和size两个域变量,其中,rear指示队尾元素之后的位置,size表示队列的长度,如图所示(队列长度为3,队头元素为x)。设队列的存储空间容量为M,则队头元素的位置为(  )。A.(Q.rear-Q.size+1)B.(Q.rear-Q.size+1)%MC.(Q.rear-Q.size)D.(Q.rear-Q.size+M)%M

选项 A.(Q.rear-Q.size+1)
B.(Q.rear-Q.size+1)%M
C.(Q.rear-Q.size)
D.(Q.rear-Q.size+M)%M

答案 D

解析 本题考查数据结构基础知识。
    队列是一种先进先出(FIFO)的线性表,它只允许在表的一端插入元素,而在表的另一端删除元素。在队列中,允许插入元素的一端称为队尾(rear),允许删除元素的一端称为队头(front)。
    将元素存储在一维数组中的队列假想成一个环状结构,称为循环队列。
    根据题中的图示,Q.size的合法取值为0~M,Q.rear的合法取值为0~M-1,显然,队头元素的合法位置应该为O~M-1,因此通过整除M取余运算(即%M)可以确保这一点。当Q.rear-Q.size≥0时,队头元素的位置就是Q.rear-Q.size,其值一定在0~M-1之间;当Q.rear-Q.size<0时,队头元素的位置为(Q.rear-Q.size+M)。综上,队头元素的位置应该为(Q.rear-Q.size+M)%M。
转载请注明原文地址:https://www.tihaiku.com/congyezige/2427534.html

最新回复(0)