邻接矩阵,邻接表

邻接矩阵:

 1 #include <iostream>
 2 #include <algorithm>
 3 #include <cstdio>
 4 #include <cstring>
 5 using namespace std;
 6
 7 typedef char VertexType[4];
 8 typedef int VRtype;
 9 #define INF 100000
10 #define Max 20
11
12 typedef struct     /*定点*/
13 {
14     VRtype adj;    /*权值*/
15 }ARCNode,AdjMatrix[Max][Max];
16 typedef struct     /*图类型*/
17 {
18     VertexType vex[Max];    /*储存定点*/
19     AdjMatrix arc;    /*邻接矩阵*/
20     int vexnum,arcnum;    /*定点,边数目*/
21 }Mgraph;
22
23 void CreateGraph(Mgraph *N);
24 void Display(Mgraph N);
25 int Locate(Mgraph *N,char *v);
26
27 int main()
28 {
29     Mgraph N;
30     CreateGraph(&N);
31     Display(N);
32 }
33 int Locate(Mgraph *N,char *v)
34 {
35     int i;
36     for(i=0;i<N->vexnum;i++)
37         if(strcmp(v,N->vex[i])==0)
38             return i;
39     return -1;
40 }
41 void CreateGraph(Mgraph *N)
42 {
43
44     VertexType v1,v2;
45     VRtype w;
46     cout<<"输入定点,边数目"<<endl;
47     cin>>N->vexnum>>N->arcnum;
48     int i,j,k;
49     cout<<"输入定点名称"<<endl;
50     for(i=0;i<N->vexnum;i++)    /*输入定点名称*/
51         cin>>N->vex[i];
52
53     for(i=0;i<N->vexnum;i++)    /*初始化*/
54     {
55         for(j=0;j<N->vexnum;j++)
56         {
57             N->arc[i][j].adj=INF;
58         }
59     }
60     cout<<"输入边权值"<<endl;
61     for(k=0;k<N->arcnum;k++)
62     {
63         cin>>v1>>v2>>w;
64         i=Locate(N,v1);
65         j=Locate(N,v2);
66         N->arc[i][j].adj=w;
67     }
68 }
69 void Display(Mgraph N)
70 {
71     int i,j,k;
72     for(i=0;i<N.vexnum;i++)
73     {
74         for(j=0;j<N.vexnum;j++)
75         {
76             cout<<N.arc[i][j].adj<<" ";
77         }
78         cout<<endl;
79     }
80 }
时间: 2024-07-30 17:43:20

邻接矩阵,邻接表的相关文章

图基本算法 图的表示方法 邻接矩阵 邻接表

要表示一个图G=(V,E),有两种标准的表示方法,即邻接表和邻接矩阵.这两种表示法既可用于有向图,也可用于无向图.通常采用邻接表表示法,因为用这种方法表示稀疏图(图中边数远小于点个数)比较紧凑.但当遇到稠密图(|E|接近于|V|^2)或必须很快判别两个给定顶点手否存在连接边时,通常采用邻接矩阵表示法,例如求最短路径算法中,就采用邻接矩阵表示. 图G=<V,E>的邻接表表示是由一个包含|V|个列表的数组Adj所组成,其中每个列表对应于V中的一个顶点.对于每一个u∈V,邻接表Adj[u]包含所有满

数据结构学习笔记05图 (邻接矩阵 邻接表--&gt;BFS DFS)

数据结构之图 图(Graph) 包含 一组顶点:通常用V (Vertex) 表示顶点集合 一组边:通常用E (Edge) 表示边的集合 边是顶点对:(v, w) ∈E ,其中v, w ∈ V 有向边<v, w> 表示从v指向w的边(单行线) 不考虑重边和自回路 无向图:边是无向边(v, w) 有向图:边是有向边<v, w> 连通:如果从V到W存在一条(无向)路径,则称V和W是连通的 连通图(Connected Graph):如果对于图的任一两个顶点v.w∈V,v和w都是连通的,则称

&lt;图论入门&gt;邻接矩阵+邻接表

非本人允许请勿转载. 趁热打铁,学会了邻接表把这个总结一下,以及感谢大佬uncle-lu!!!(奶一波)祝早日进队! 首先,图论入门就得是非常基础的东西,先考虑怎么把这个图读进去. 给定一个无向图,如下 怎么把这个图的数据读入进去呢? 把这个图剖析开来看,1连着的是2和3,2连着4和5,3连着6和7,4连着5,5连着8和6,6连着9. 所以这个图可以用一种神奇的东西----邻接矩阵来存.如下,能联通的制为1,不能联通的制为0. 那么可以看出来,这个邻接矩阵光读入的时间复杂度就是O(N2)的了,在

HDU 1285 确定比赛名次 拓扑排序(邻接矩阵 邻接表

确定比赛名次 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Description 有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获得每个队的比赛成绩,只知道每场比赛的结果,即P1赢P2,用P1,P2表示,排名时P1在P2之前.现在请你编程序确定排名. Input 输

网络流三大算法【邻接矩阵+邻接表】POJ1273

网络流的基本概念跟算法原理我是在以下两篇博客里看懂的,写的非常好. http://www.cnblogs.com/ZJUT-jiangnan/p/3632525.html http://www.cnblogs.com/zsboy/archive/2013/01/27/2878810.html 网络流有四种算法, 包括 Edmond-Karp(简称EK), Ford-Fulkerson(简称FF), dinic算法以及SAP算法. 下面我会写出前三种算法的矩阵跟邻接表的形式, 对于第四种以后有必要

数据结构----邻接矩阵-邻接表

要表示一个图G=(V,E),有两种标准的表示方法,即邻接表和邻接矩阵.这两种表示法既可用于有向图,也可用于无向图.通常采用邻接表表示法,因为用这种方法表示稀疏图(图中边数远小于点个数)比较紧凑.但当遇到稠密图(|E|接近于|V|^2)或必须很快判别两个给定顶点手否存在连接边时,通常采用邻接矩阵表示法,例如求最短路径算法中,就采用邻接矩阵表示. #include<stdio.h> #include<string.h> #include <stdlib.h> #define

图的存储结构:邻接矩阵(邻接表)&amp;链式前向星

[概念]疏松图&稠密图: 疏松图指,点连接的边不多的图,反之(点连接的边多)则为稠密图. Tips:邻接矩阵与邻接表相比,疏松图多用邻接表,稠密图多用邻接矩阵. 邻接矩阵: 开一个二维数组graph[ ][ ]来记录图中点a与点b之间是否连通,初始化为0(或者-1之类的看情况):如果图中有可忽略的重边(如 只需重边中的最小边或最大边),则保存需要的那条边的边权,但如果有无法忽略的重边,就一定不要用邻接矩阵. int graph[MAXN][MAXN]; void graphInit() { me

邻接表转邻接矩阵

假设无向图G采用邻接矩阵存储,编写一个算法输出邻接表. Description 第一行为一个整数n,表示顶点的个数(顶点编号为0到n-1),接下来是为一个n*n大小的整数矩阵,表示图的邻接关系.数字为0表示不邻接,1表示邻接. Input 输出图G的邻接表.第一行表示顶点0可直接到达的顶点编号.其他行定义相同. Output 1 2 3 4 5 6 5 0 1 0 1 1 1 0 1 1 0 0 1 0 1 1 1 1 1 0 1 1 0 1 1 0 Sample Input 1 2 3 4 5

图(网)的存储结构(数组存储表示即邻接矩阵、邻接表)

图(Graph)是一种非线性结构 图的特点(多对多),顶点之间的关系是任意的,图中任意两个顶点之间都可能相关,顶点的前驱和后继个数无限制. 图:数据元素间存在多对多关系的数据结构,加上一组基本操作构成的抽象数据类型. 图的基本术语 顶点:图中的数据元素. 弧:若 <v, w>∈VR,则 <v, w> 表示从 v 到 w 的一条弧,且称 v 为弧尾,称 w 为弧头,此时的图称为有向图. G1 = (V1, A1)          V1 = {v1, v2, v3, v4} A1 =

POJ 2387 Til the Cows Come Home dijkstra算法 用邻接表和邻接矩阵

题目如下: Til the Cows Come Home Time Limit: 1000MS        Memory Limit: 65536K Total Submissions: 27726        Accepted: 9353 Description Bessie is out in the field and wants to get back to the barn to get as much sleep as possible before Farmer John wa