回 帖 发 新 帖 刷新版面

主题:深度优先搜索问题

最近写了一个基于邻接矩阵的深度优先算法,可是有问题,求高手相助,谢谢

#include<iostream>
using namespace std;
#define Max 6
typedef struct//邻接矩阵结构 
{
    int Nodenum,Arcnum;//节点个数,边长数
    int array[Max][Max];//邻接矩阵
    int Node[Max];//节点数组
}Matrix;
void Create(Matrix &G)//构造邻接矩阵
{
    int i,j,k;
    int v1,v2;
    cout<<"请输入节点数和弧条数"<<endl;
    cin>>G.Nodenum>>G.Arcnum;
    for(i=0;i<G.Nodenum;i++)//初始化矩阵
        for(j=0;j<G.Nodenum;j++)
            G.array[i][j]=0;
    for(i=0;i<G.Nodenum;i++)
    {
        cout<<"请输入节点(最小不能小于1)"<<endl;
        cin>>G.Node[i];
    }
    for(i=1;i<=G.Arcnum;i++)
    {
        cout<<"请输入每条边的两个顶点"<<endl;
        cin>>v1>>v2;
        j=0;
        k=0;
        while(v1!=G.Node[j])//用来判读输入的节点是否有误
        {
            j++;
            if(j==G.Nodenum)
            {
                cout<<"你输入的节点1有误"<<endl;
                i--;
            }
        }
        while(v2!=G.Node[k])
        {
            k++;
            if(k==G.Nodenum)
            {
                cout<<"你输入的节点2有误"<<endl;
                i--;    
            }
        }
        if((j!=G.Nodenum)&&(k!=G.Nodenum))//对称矩阵,我没有压缩储存
          G.array[v1-1][v2-1]=G.array[v2-1][v1-1]=1;
    }
}
void DFS(Matrix &G,int v,int count)//深度优先查找
{
    int i,k,j;
    int m=count;
    int visited[Max]={0,0,0,0,0,0};//用于标志访问过的节点
    for(i=0;i<G.Nodenum;i++)
    {
        if(G.array[v-1][i]==1)
        {
            k=i+1;
            j=0;
            while(k!=visited[j])
            {
                j++;
                if(j==Max)
                {
                   cout<<k<<endl;
                   visited[m]=k;
                   m++;
                }
            }
            G.array[v-1][i]=G.array[i][v-1]=-1;//防止重复访问
            DFS(G,k,m);
        }
        else
            return;
    }
}
void main()
{
    int v;
    Matrix G;
    Create(G);
    cout<<"请输入你想查找的第一个节点"<<endl;
    cin>>v;
    cout<<"变历结果是"<<endl;
    cout<<v<<endl;
    DFS(G,v,0);
}

回复列表 (共3个回复)

沙发

你好.我是全职网赚工作者.
如果你有时间有电脑.
想在网络上创业.请联系我..
项目绝对真实.详情QQ空间资料
加盟请联系 QQ908889846

板凳

寻找一直寻找机会的人!
一个趋势中的趋势的项目!
一个直销和传销终结者的项目!
一个帮助普通创业者成功的项目!
   我们在互联网上正在拓展一个生意项目,现在正在寻求合作伙伴。我们认为成功的关键是你是什么人?还有你和谁在一起。我们在乎的是--您是否是有激情、有梦想的人。有意者请跟我们联系,我们和您谈谈,给您讲解一些生意概念,或许我们可以合作。一个集即时网游、交友,娱乐游戏,网络品牌代理商城,互联网平台项目招商进行中……详情QQ空间资料
网商咨询 摩客天宇QQ 909065437 

3 楼

寻找中国的最优秀的网商领袖精英  
当今世界正经历着全球经济一体化的大潮,中国本土企业也因此面临着前所未有的机遇与挑战。
在这场洗礼中,哪些互联网平台有能力成为世界级的电子商务平台?网商精英要怎样做,才能最终成长为世界级网商精英领袖?
淘宝商盟平台震撼登场,携手淘宝30万商家联盟购物商城。
平台刚刚启动,互联网的网商精英请咨询qq: 908889846 
占领市场第一先机,合力打造网商系统!
淘宝商盟官网   www.taobaosm.com
 http://blog.sina.com.cn/tbsm8
淘宝商盟奖励制度

我来回复

您尚未登录,请登录后再回复。点此登录或注册