循环队列:
循环列表有两种情况:
1.队尾队头指向不一致:
1.1队尾指针指向队尾元素后一个,即下一个插入位置,队头指针指向队头元素
1.2 队头指针指向队头元素前一个,队尾指针指向队尾元素
2.队头指针指向队头元素,队尾指针指向队尾元素:
而为了区分队空与队满有三种方式:
a.牺牲一个存储单元
b.设置size记录元素个数
c.设置tag区分队空队满
初始化:
1.1
Q.rear=Q.front=0;
1.2
Q.rear=Q.front=0;
2
Q.rear=Maxsize-1;
Q.front=0;
入队:
1.1
Q.data[Q.rear]=x;
Q.rear=(Q.rear+1)%Maxsize;
1.2
Q.rear=(Q.rear+1)%Maxsize;
Q.data[Q.rear]=x;
2.
Q.rear=(Q.rear+1)%Maxsize;
Q.data[Q.rear]=x;