Bootstrap

无向网的邻接矩阵

无向网掌握了,无向图,有向网,有向图的邻接矩阵则都可以掌握

无向网缺点:加入删除增加一个点都要删除或增加数组一行一列

对于稀疏图边很少空间复杂度为N平方,浪费空间,且统计边数时候也浪费时间复杂度N平方

优点:对于完全图还是很合算的。

#include<iostream>
using namespace std;
#define maxint 32767
#define mvnum 100

typedef char elemtype;
typedef int arch;
typedef int status;


typedef struct
{

    elemtype aex[mvnum];//存放数据
    arch arcs[mvnum][mvnum];//邻接矩阵
    int vexnum, arcnum;//当前顶点数,边数;
}amgraph;

int locatevex(amgraph g, char c)
{
    int i;
    for (i = 0; i < g.vexnum; i++)
    {
        if (g.aex[i] == c)
        {
            return i;
        }
    }
    return -1;//没找到
}

status createudn(amgraph& g)
{
    int i, j,k;
    elemtype v1, v2;
    int w;
    cout << "请输入当前顶点数和边数" << endl;
    cin >> g.vexnum >> g.arcnum;//输入边数,顶点数
    for (i = 0; i < g.vexnum; i++)
    {
        cout << g.aex[i] << endl;
    }
    for (i = 0; i < g.vexnum; i++)
        for (j = 0; i < g.vexnum; j++)
        {
            g.arcs[i][j] = maxint;//先赋值为最大
        }

    

    for (k = 0; k < g.arcnum; k++)
    {
        cout << "请输入一条边顶点的数据以及权值" << endl;
        cin >> v1 >> v2 >> w;
        i = locatevex(g, v1);
        j = locatevex(g, v2);
        g.arcs[i][j] = w;
        g.arcs[j][i] = g.arcs[i][j];
    }

}

//输入顶点数,输入边数
//maxint为权最大值无权则为maxint;

int main()


{
    amgraph g;
    createudn(g);
}

;