Zijeak 2018-12-25 21:31 采纳率: 33.3%
浏览 854

【数据结构】用邻接表存储图的简单问题

#include<stdio.h>
#define MAX_VERTEX_NUM 20//最多顶点个数 
#define ERROR -1

typedef char VertexData;
//边表节点类型定义 
typedef struct ArcNode{
    int adj;//该弧指向顶点的位置 
    struct ArcNode *nextarc;//指向下一条弧的指针 
}ArcNode;
//表头节点类型定义 
typedef struct VertexNode{
    VertexData data;
    ArcNode *firstarc;//指向该顶点第一条弧的指针; 
    int order;
}VertexNode;
typedef struct{
    VertexNode vertex[MAX_VERTEX_NUM];
    int vexnum,arcnum;
}AdjList;

int LocateVertex(AdjList *G,VertexData v)
{
    int j=ERROR,k;
    for(k=0;k<G->vexnum;k++)
    {
     if(G->vertex[k].data==v)
     {
        j=G->vertex[k].order;
        break;
     }
    }
     return(j);
} 

void CreateGraph(AdjList *G)
{
    printf("请输入图的顶点数和弧数(最多不超过20):");
    scanf("%d %d",&G->vexnum,&G->arcnum);
    printf("请输入顶点:");
    int i,j,k;
    char v1,v2;
    for(i=0;i<G->vexnum;i++)
    {
        scanf("%c",&(G->vertex[i].data)); 
        G->vertex[i].order=i+1;
        G->vertex[i].firstarc=NULL;

    }
    printf("请输入一条弧的两个顶点(例如AB):\n");
    for(k=0;k<G->vexnum;k++)
    {
        scanf("%c %c",&v1,&v2);
        ArcNode *p,*q;
        p=(ArcNode*)malloc(sizeof(ArcNode));
        q=(ArcNode*)malloc(sizeof(ArcNode));

        i=LocateVertex(G,v1);
        j=LocateVertex(G,v2); 
        p->adj=j;
        q->adj=i;
        p->nextarc=G->vertex[i].firstarc;
        q->nextarc=G->vertex[j].firstarc;
        G->vertex[i].firstarc=p;
        G->vertex[j].firstarc=q;
        fflush(stdin);
    }


}
void print(AdjList *G)
{
    int i,j;
    for(i=0;i<G->vexnum;i++)
    {
        printf("%c  ",G->vertex[i].data);
        ArcNode *p;
        p=G->vertex[i].firstarc;
        while(p!=NULL)
        {
            printf("%d  ",p->adj);
            p=p->nextarc;
        }
        printf("\n");   

    }
}

void main()
{
    AdjList G;
    CreateGraph(&G);
    print(&G);
}

用邻接表存储图,但是测试(将所建的邻接表打印在屏幕上)时出现以下非正常结果
求大佬指点迷津
图片说明

  • 写回答

1条回答 默认 最新

  • devmiao 2018-12-25 14:01
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 运筹学中在线排序的时间在线排序的在线LPT算法
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧