注册 登录
编程论坛 数据结构与算法

入队出对为什么这样调指针?

suqhang 发布于 2010-10-22 14:52, 571 次点击
void SEQUENCE_QUEUE::InQueue(ELEMTYPE *pe)
{
    queue[rear]=*pe;
    rear=(rear+1)%MAXSIZE;                //???
}


void SEQUENCE_QUEUE::OutQueue(ELEMTYPE *pe)
{
    *pe=queue[front];
    front=(front+1)%MAXSIZE;            //???
4 回复
#2
m21wo2010-10-22 15:44
这时循环队列的入队和出队么!
#3
suqhang2010-10-22 15:45
回复 2楼 m21wo
是啊
#4
wsliuyunming2010-10-25 15:47
因为  rear=(rear+1)%MAXSIZE;  MAXSIZE是指队列的最大的容量 %取余运算, rear+1)%MAXSIZE让rear指向队列的下个位子。 同理front 也是如此。因为front总是指在最后一个元素的下一个位子所以front=(front+1)%MAXSIZE中假如MAXSIZE=10,front=3 运算之后front就等于4了指向了第4个位子了。假如maxsize等于4 front就指向了第一个0号位子了。你就把它看成一个有大小的循环就可以了
#5
suqhang2010-10-29 23:32
回复 4楼 wsliuyunming
如果我想做约瑟夫环问题,如何用循环??
1