最近恶补数据结构第三章作业,发现大多数都是循环队列方面的题,可见在队列这一节的重点就是循环队列,这里就小结一下关于循环队列的知识。
1.循环队列的优点:充分利用向量空间,克服“假溢出现象”。
2.循环队列的两种写法:第一种可以设头,尾两个指针。但这样就会存在一个问题:在判断队空还是队满的时候条件都是front = rear .因此,如何判断队空还是队满就成为了一个难 点,我比较喜欢采用的一种方法是进行求余运算:队空时 (front = rear) 队满时 ((rear +1)%Maxsize = front) 第二种写法可以只设一个尾指针,而这种写法又可以分为 两种,一种是写成带头结点的循环链表来表示队列(作业第六题),第二种是写成只有尾指针,但满足循环队列结构体的形式,即存在记录队列长度的结构体成员(作业第七题)。
值得说明的是,在循环队列这里利用求余方法解决判断队空队满的问题是非常普遍的,足以见得这是一种非常优秀的思想。这里顺便提一下某位同学考过我的一道题:用一重循环将一串字符输出三次。