无向网掌握了,无向图,有向网,有向图的邻接矩阵则都可以掌握
无向网缺点:加入删除增加一个点都要删除或增加数组一行一列
对于稀疏图边很少空间复杂度为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);
}