| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1703 人关注过本帖
标题:建立图邻接矩阵的问题
只看楼主 加入收藏
leon57
Rank: 1
来 自:xznu
等 级:新手上路
帖 子:29
专家分:0
注 册:2008-7-19
收藏
 问题点数:0 回复次数:4 
建立图邻接矩阵的问题
#include<stdio.h>
#define MAX_VERTEX_NUM 10

typedef int VertexNode;   




typedef struct
{
    VertexNode vertex[MAX_VERTEX_NUM];
    VertexNode arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
    int vexnum,arcnum;
    
}AdjMartrix;


int LocateVertex(AdjMartrix *G,int v)
{
    int j,k;
    for(k=0;k<G->vexnum;k++)
        if(G->vertex[k]==v)
        {
            j=k;
            break;
        }
        return j;
}


int CreateDN(AdjMartrix *G)
{
    int i,j,k;int v1,v2;
    scanf("%d",&G->vexnum);
    scanf("%d",&G->arcnum);

    for(i=0;i<G->vexnum;i++)
        for(j=0;j<G->vexnum;j++)
            G->arcs[i][j]=0;
        
        for(i=0;i<G->vexnum;i++)
            scanf("%d",&G->vertex[i]);
        for(k=0;k<G->arcnum;k++)
        {
            scanf("%d,%d",&v1,&v2);
            i=LocateVertex(G,v1);
            j=LocateVertex(G,v2);
            G->arcs[i][j]=1;
            G->arcs[j][i]=1;
        }
        return 0;
}
void putDN(AdjMartrix *G)
{
    int i,j;
    for(i=0;i<G->vexnum;i++)
    {
        for(j=0;j<G->vexnum;j++)
            printf("%d",G->arcs[i][j]);
        printf("\n");
    }
}

void main()
{

    AdjMartrix *G;
    CreateDN(G);
    putDN(G);

}


输入一个数据就有错误......
搜索更多相关主题的帖子: 邻接矩阵 
2008-12-01 17:22
leon57
Rank: 1
来 自:xznu
等 级:新手上路
帖 子:29
专家分:0
注 册:2008-7-19
收藏
得分:0 
为什么刚开始输入数据出现错误?
2008-12-02 20:20
cigar
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-12-7
收藏
得分:0 
我也是的和你编的差不多,一运行就跳出来
2008-12-11 20:12
wangtao2536
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-9-19
收藏
得分:0 
兄弟你的没有什么错啊!可能是你输入有误吧!
加点打印提示嘛~!
enter the vexnum and arcnum:
4 5
please input vertex:
0 1 2 3
plesase input arcs:
0,1
0,2
0,3
1,2
2,3
  0  1  1  1
  1  0  1  0
  1  1  0  1
  1  0  1  0
这样就OK了呀!
2008-12-14 16:25
盆中线
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2008-11-6
收藏
得分:0 
兄弟啊。。我把你那个代码改了点。。输入数据不会错了。。你看看:
#include<stdio.h>
#define MAX_VERTEX_NUM 10

typedef int VertexNode;   




typedef struct
{
    VertexNode vertex[MAX_VERTEX_NUM];
    VertexNode arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
    int vexnum,arcnum;
   
}AdjMartrix;


int LocateVertex(AdjMartrix *G,int v)
{
    int j,k;
    for(k=0;k<G->vexnum;k++)
        if(G->vertex[k]==v)
        {
            j=k;
            break;
        }
        return j;
}


int CreateDN(AdjMartrix *G)
{
    int i,j,k;
    int v1,v2;
    scanf("%d",&(G->vexnum));//这里是不是应该全部括起来呢?下面的一样
    printf("women\n");//测试的。。。。
    scanf("%d",&(G->arcnum));
    
    for(i=0;i<G->vexnum;i++)
        for(j=0;j<G->vexnum;j++)
            G->arcs[i][j]=0;
        
        for(i=0;i<G->vexnum;i++)
            scanf("%d",&(G->vertex[i]));
        for(k=0;k<G->arcnum;k++)
        {
            scanf("%d,%d",&v1,&v2);
            i=LocateVertex(G,v1);
            j=LocateVertex(G,v2);
            G->arcs[i][j]=1;
            G->arcs[j][i]=1;
        }
        return 0;
}
void putDN(AdjMartrix G)//这里直接调用就好了
{
    int i,j;
    for(i=0;i<G.vexnum;i++)
    {
        for(j=0;j<G.vexnum;j++)
            printf("%d",G.arcs[i][j]);
        printf("\n");
    }
}

void main()
{
    
    AdjMartrix G;//因为worning说这个G没有初始化,还有这个结构体也该这样声明吧。。
    CreateDN(&G);   //应该是传地址调用。。。
      putDN(G);//因为是访问,而不会改变G的属性,所以这里不用用指针
    
}
//希望对了。。。。

[[it] 本帖最后由 盆中线 于 2008-12-14 22:01 编辑 [/it]]
2008-12-14 21:34
快速回复:建立图邻接矩阵的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016300 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved