循环队列的遍历问题
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!!!
之后就陷入死循环了。。。
请高手帮忙修改下啊 展开
{
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个回答
展开全部
/*我记得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年后更新:这个回答还是刚学的时候写的,现在看来真冗杂,懒得再改了,保护好头发*/
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询