结构向量的错误分配?代码无效

时间:2015-04-03 10:13:35

标签: c++ vector breadth-first-search

我的代码在标记点之后无效。

#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”并转到下一行。请帮助。

2 个答案:

答案 0 :(得分:0)

使用cout<<"LOL"<<endl;刷新输出。

信任调试器。如果它转到下一行,则执行该语句。

答案 1 :(得分:0)

由于您尚未清除向量下一步,因此在最后循环的每次迭代中,您将在前沿中保持下一步。所以前沿永远不会变空。所以你的代码处于无限循环中。

之前删除您的评论标记
next.clear();