标题:建立图邻接矩阵的问题
只看楼主
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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-247221-1-1.html




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

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