数据结构严版数组表示法简单具体实现

本文介绍了如何使用C语言定义结构体和函数来创建无向图,包括输入顶点数、边数和边的信息,以及利用邻接矩阵存储图的结构。
摘要由CSDN通过智能技术生成
#include<stdio.h>

#define MAX_NUM 20
#define INFINITY 10000000



typedef struct ArcCell {
    int adj;                          //是顶点关系类型,对无权图01对带权图自定义
    //InfoType* info;                      //弧相关信息的指针
}ArcCell, AdjMatrix[MAX_NUM][MAX_NUM];

typedef struct {
    int vexs[MAX_NUM];            //顶点向量
    AdjMatrix arcs;                      //邻接矩阵
    int vexnum, arcnum;                   //顶点数和弧数
    //GraphKind kind;                      //图的种类
}MGraph;
int LocateVex(MGraph &G, int a) {            //找位置实现的方法
    for (int i = 0; i < G.vexnum; i++) {
        if (G.vexs[i] == a) {
            return i;
        }
    }
    return -1;
}
//构造无向图
void CreatUDN(MGraph& G) {
    printf("请输入顶点数目边的数目");
    scanf_s("%d%d", &G.vexnum, &G.arcnum);
    for (int i = 0; i < G.vexnum; ++i) {//构造顶点变量
        printf("请输入顶点值");
        scanf_s("%d", &G.vexs[i]);
    }
    for (int i = 0; i < G.vexnum; ++i)
        for (int j = 0; j < G.vexnum; ++j)
            //G.arcs[i][j] = { INFINITY ,NULL };//{adj,info}
            G.arcs[i][j] = { INFINITY };//因为没搞info
    for (int k = 0; k < G.arcnum; ++k) {
        int v1, v2, w; 
        printf("请输入v1 v2 and w");
        scanf_s("%d%d%d", &v1, &v2,&w);//确定一条边依附的顶点和权值
        int i = LocateVex(G, v1);
        int j = LocateVex(G, v2);
        G.arcs[i][j].adj = w;
        G.arcs[j][i] = G.arcs[i][j];//无向图
    }
}

int main() {
    MGraph G;
    CreatUDN(G);
    
    return 0;
}





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值