s表示的是循环队列的成员个数
front是队列的头指针
rear是队列的尾指针
s=0表示循环队列中的成员个数为0,当然也就是队列为空了
s=1表示循环队列中的成员个数为1,front=rear说明队列的头指针和尾指针都指向同一个队列成员,也就是说这个/队列已经封闭了(首尾已经相接),那么这个队列也就满了
>>front=rear=m其中的m也不晓得是什么了
这个m就是具体的成员的地址了,front=rear=m,m就成了当前循环队列中唯一的成员
队列和语言无关,主要看采用什么策略!
1)多1空间的一种实现!
enum {NUM =120};
struct Queue
{
int a[NUM+1];
int rear;
int front;
};
push(x){ q.a[ q.front++]=x;}
pop(){ q.rear++;}
isempty() {return q.rear==q.front;}
isfull(){return q.rear-q.front ==1 || q.rear +NUM - q.front==0;};
这种情况下, 队满的时候,front位置没有元素,下个元素是队尾。
( 这种做法front位置永远没有元素!)
2)计数的一种实现
enum {NUM =120};
struct Queue
{
int a[NUM];
int front;
int count;
};
push(x){ q.a[ q.front++]=x;}
pop(){ q. count--;}
isempty() {return q.count==0;}
isfull(){return q.count==NUM;};
这种情况下 队满的时候front位置和下个位置都有元素!!
有元素,并且是最后一个元素
对空时,front和rear指向同一位置
都满了,肯定有啊