c++队列问题 从第一张牌仍掉开始,把第一张牌扔掉,然后开始把新的第一张放在整碟牌的后面。
为什么我的程序死循环 。
#include<iostream>
#include<queue>
using namespace std;
queue<int> q;
int main()
{
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++)
cin>>a[i];
for(int i=0;i<n;i++)
q.push(a[i]);
while(!q.empty())
{
cout<<q.front();
q.pop();
q.push(q.front());
}
system("pause");
return 0;
}
追问:没怎么明白OK
答案:while(!q.empty())
{
cout<<q.front();
q.pop();
q.push(q.front());
}
你pop了一次 又 push了一次,相当于q的内部元素数量不变
q.empty()永远返回真,所以死循环
其他:我很奇怪怎么不会死循环呢?先pop然后push q永远不会空
上一个:C++顺序表插入算法运行问题
下一个:以下代码执行错误,将char* string改为char string[]则可以正确执行,求问为何?