循环队列的遍历问题

voidQueue::Show(){inti=(front+1)%maxsize;cout<<"当前队列如下:"<<endl;for(i;i!=rear+1;i=(i+1... void Queue::Show()
{
int i=(front+1)%maxsize;
cout<<"当前队列如下:"<<endl;
for(i;i!=rear+1;i=(i+1)%maxsize)
{
cout<<queue[i]<<" ";
}

其他代码不用写了,问题就在Show()函数这里。
这里maxsize=10;当rear=9,i=9时i=(i+1)%maxsize之后i=0!!!
之后就陷入死循环了。。。
请高手帮忙修改下啊
展开
 我来答
城虽小镇总藏瓜2
2021-12-19 · TA获得超过218个赞
知道答主
回答量:50
采纳率:0%
帮助的人:4.8万
展开全部
/*我记得front是要存元素的,rear不存元素你int i=front +1,
然后输出queue[i]不就把第一个给漏了吗我觉得应该这样写*/
{
    if(IsEmpty())
        cout<<"\nQueue is Empty!\n";
    else
    {
        int i,x,j;
        j=x=front;
        cout<<"\nQueue elements are:\n";
        if(front>rear)
        {
            x=front-maxSize;
            for(i=x;i<rear;i=(i+1)%maxSize)
            {
                cout<<elements[j]<<"  ";
                j=(j+1)%maxSize;
            }
        }
        else
        {
            for(i=front;i<rear;i=(i+1)%maxSize)
            {
                cout<<elements[i]<<"  ";
            }
        }
    }
}
/*感觉思路还是有点乱,应该还有更简便的方法*/
---------------------------------------
/*2年后更新:这个回答还是刚学的时候写的,现在看来真冗杂,懒得再改了,保护好头发*/
zt_hlj
2012-10-24 · TA获得超过150个赞
知道小有建树答主
回答量:290
采纳率:0%
帮助的人:164万
展开全部
不死才怪,当rear>maxsize是全部都是死的,主要是你的思路不清晰,参数没有必要那么多,把rear去掉,使用maxsize表述,rear是一个无用参数,至少在这个循环里面
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式