c语言循环队列

来源:百度知道 编辑:UC知道 时间:2024/05/24 23:13:38
循0环队列中s=0表示队列空,s=1且front=rear表示队列满
这到底是什么意思啊,小弟看不懂了。那位大侠帮帮忙啊。
还有那里的s代表什么意思啊。好像还有个front=rear=m其中的m也不晓得是什么了.

s表示的是循环队列的成员个数
front是队列的头指针
rear是队列的尾指针

s=0表示循环队列中的成员个数为0,当然也就是队列为空了
s=1表示循环队列中的成员个数为1,front=rear说明队列的头指针和尾指针都指向同一个队列成员,也就是说这个/队列已经封闭了(首尾已经相接),那么这个队列也就满了

>>front=rear=m其中的m也不晓得是什么了
这个m就是具体的成员的地址了,front=rear=m,m就成了当前循环队列中唯一的成员

循环队列中,由于入队时尾指针向前追赶头指针;出队时头指针向前追赶尾指针,造成队空和队满时头尾指针均相等。因此,无法通过条件front==rear来判别队列是"空"还是"满"!
队列存放数组当作首尾相接的表处理。
队首、队尾指针加1时从MaxSize -1直接进到0的处理,可用C语言的取模(求余数)运算实现。
队首指针进1: front = (front+1) % maxSize;
队尾指针进1: rear = (rear+1) % maxSize;
队列初始化(初始空队列):front = rear = 0;
队空条件:front == rear;
队满条件:(rear+1) % maxSize ==front 。

一楼的回答有问题。

m 是这个队列的容量

这是设置了一个标志位来区别队列是“空”还是“满”