循环队列,网上一搜一大堆,细细看来,都是bug满天飞,还有勇气贴代码出来。。。耗费一早终于搞明白了,遂、小计一下:
1.循环队列原则:先进先出
2.循环队列分为队首指针(front)和队尾指针(rear)
3.判断空队时 :front == rear
3.判断队满时:(rear+1)%MaxSize == front
4.入队:rear=(rear+1)%MaxSize; Q(rear)=x;
5.出队:front =(front+1)%MaxSize;x=Q(front);
6.队长:(rear-front+MaxSize)%MaxSize
注:
一、在队中front永远指向队首,也就是当前已删除的元素或者队首初始化的位置。不可直接操作!
二、rear永远指向的队尾最后一个元素,遵循先入先出原则,该指针不可直接操作!
1.循环队列原则:先进先出
2.循环队列分为队首指针(front)和队尾指针(rear)
3.判断空队时 :front == rear
3.判断队满时:(rear+1)%MaxSize == front
4.入队:rear=(rear+1)%MaxSize; Q(rear)=x;
5.出队:front =(front+1)%MaxSize;x=Q(front);
6.队长:(rear-front+MaxSize)%MaxSize
注:
一、在队中front永远指向队首,也就是当前已删除的元素或者队首初始化的位置。不可直接操作!
二、rear永远指向的队尾最后一个元素,遵循先入先出原则,该指针不可直接操作!
三、求队长是加MaxSize可以防止rear<front出现负数.