我的代码在标记点之后无效。
#include<iostream>
#include<vector>
using namespace std;
struct node{
int data;
int level;
};
int main()
{
node x;
x.data=0;
int j=0;
int n;
int strt,lv=1;
cout<<"Enter No. of Nodes: ";
cin>>n;
vector<node> adj[n];
int m,data,nb=0;
while(j<n)
{
cout<<"Enter No. of Neighbours of "<<j<<": ";
cin>>m;
while(nb<m)
{
cin>>x.data;
x.level=0;
adj[j].push_back(x);
nb++;
}
nb=0;
j++;
}
vector<node>::iterator i;
/*for(j=0;j<n;++j)
{
cout<<j;
for(i=adj[j].begin();i!=adj[j].end();i++)
{
cout<<"->"<<(*(i)).data;
}
cout<<endl;
}*/
node y,z;
cout<<"Enter Starting Node: ";
cin>>strt; //This Point-*****************************
cout<<"LOL";
y.data=strt;
y.level=0;
vector<node> frontier;
vector<node> next;
frontier.push_back(y);
while(!frontier.empty())
{
z=frontier.back();
frontier.pop_back();
//next.clear();
for(i=adj[z.data].begin();i!=adj[z.data].end();i++)
{
if((*(i)).level==lv-1)
{ (*(i)).level=lv;
next.push_back((*(i)));
}
}
frontier=next;
lv++;
}
for(i=next.begin();i!=next.end();i++)
{
cout<<(*(i)).data<<" ";
}
return 0;
}
终端继续接受输入,好像程序处于无限循环中一样 - 但是它没有陷入无限循环,因为即使在调试代码时,cout&lt;&lt;“LOL”语句也没有执行,解释器读取cout&lt; &lt;“LOL”并转到下一行。请帮助。
答案 0 :(得分:0)
使用cout<<"LOL"<<endl;
刷新输出。
信任调试器。如果它转到下一行,则执行该语句。
答案 1 :(得分:0)
由于您尚未清除向量下一步,因此在最后的循环的每次迭代中,您将在前沿中保持下一步。所以前沿永远不会变空。所以你的代码处于无限循环中。
在
之前删除您的评论标记next.clear();