循环队列是队列的一种顺序表示和实现方法.与顺序栈类似,在队列的顺序存储结构中,用一组地址连续的存储单元依次存放从队头到队尾的元素,又因为队列中队头和队尾的位置是动态变化的,因此需要附设两个指针front和rear,分别指示队头元素和队尾元素在队列中的位置.初始化队列时,令front = rear =0;入队时,直接将新元素送入尾指针rear所指的单元,然后尾指针加1;出队时,直接取出队头指针front所指的元素,然后头指针增1.显然,在非空顺序队列中,队头指针始终指向当前的对头元素,而队尾指针始终指向真正队尾元素后面的单元.当rear 为最长长度时,认为队满.但此时不一定是真的队满,因为随着部分元素的出队,数组前面会出现一些空单元,由于只能在队尾入队,使得上述空单元无法使用.这种现象成为假溢出.
为了解决假溢出现象并使队列空间得到充分使用,这时我们就要使用循环队列.
1.用指针front, rear和变量size对循环队列进行控制和判断.
2.当我们假如设定该循环队列只能存储五个单元时,随着新元素的不断进入,tail指针也会移到队的末尾,size也相应不断进行自增,此时队列已满.这时当你释放第一个元素和第二个元素,虽有新元素还要进来但队尾已没有空间,这时rear指针会在队尾进行一个求余计算,然后自动跳转到队头进行存储,当rear指针和front指针相遇,这时进行size的判断,会发现队列已满,无法进行存储.
3.相应的,元素进行释放,front 指针进行移动,在队尾进行计算跳转,size进行相应运算,当front指针和rear 相遇时,进行size判断,此时size为0,队列为空,可以继续存储.
为了解决假溢出现象并使队列空间得到充分使用,这时我们就要使用循环队列.
1.用指针front, rear和变量size对循环队列进行控制和判断.
2.当我们假如设定该循环队列只能存储五个单元时,随着新元素的不断进入,tail指针也会移到队的末尾,size也相应不断进行自增,此时队列已满.这时当你释放第一个元素和第二个元素,虽有新元素还要进来但队尾已没有空间,这时rear指针会在队尾进行一个求余计算,然后自动跳转到队头进行存储,当rear指针和front指针相遇,这时进行size的判断,会发现队列已满,无法进行存储.
3.相应的,元素进行释放,front 指针进行移动,在队尾进行计算跳转,size进行相应运算,当front指针和rear 相遇时,进行size判断,此时size为0,队列为空,可以继续存储.