图的建立-邻接矩阵表示(C语言)
生活随笔
收集整理的這篇文章主要介紹了
图的建立-邻接矩阵表示(C语言)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
代碼如下:
/* 圖的鄰接矩陣表示法 */#define MaxVertexNum 100 /* 最大頂點(diǎn)數(shù)設(shè)為100 */ #define INFINITY 65535 /* ∞設(shè)為雙字節(jié)無符號整數(shù)的最大值65535*/ typedef int Vertex; /* 用頂點(diǎn)下標(biāo)表示頂點(diǎn),為整型 */ typedef int WeightType; /* 邊的權(quán)值設(shè)為整型 */ typedef char DataType; /* 頂點(diǎn)存儲的數(shù)據(jù)類型設(shè)為字符型 *//* 邊的定義 */ typedef struct ENode *PtrToENode; struct ENode{Vertex V1, V2; /* 有向邊<V1, V2> */WeightType Weight; /* 權(quán)重 */ }; typedef PtrToENode Edge;/* 圖結(jié)點(diǎn)的定義 */ typedef struct GNode *PtrToGNode; struct GNode{int Nv; /* 頂點(diǎn)數(shù) */int Ne; /* 邊數(shù) */WeightType G[MaxVertexNum][MaxVertexNum]; /* 鄰接矩陣 */DataType Data[MaxVertexNum]; /* 存頂點(diǎn)的數(shù)據(jù) *//* 注意:很多情況下,頂點(diǎn)無數(shù)據(jù),此時(shí)Data[]可以不用出現(xiàn) */ }; typedef PtrToGNode MGraph; /* 以鄰接矩陣存儲的圖類型 */MGraph CreateGraph( int VertexNum ) { /* 初始化一個(gè)有VertexNum個(gè)頂點(diǎn)但沒有邊的圖 */Vertex V, W;MGraph Graph;Graph = (MGraph)malloc(sizeof(struct GNode)); /* 建立圖 */Graph->Nv = VertexNum;Graph->Ne = 0;/* 初始化鄰接矩陣 *//* 注意:這里默認(rèn)頂點(diǎn)編號從0開始,到(Graph->Nv - 1) */for (V=0; V<Graph->Nv; V++)for (W=0; W<Graph->Nv; W++) Graph->G[V][W] = INFINITY;return Graph; }void InsertEdge( MGraph Graph, Edge E ) {/* 插入邊 <V1, V2> */Graph->G[E->V1][E->V2] = E->Weight; /* 若是無向圖,還要插入邊<V2, V1> */Graph->G[E->V2][E->V1] = E->Weight; }MGraph BuildGraph() {MGraph Graph;Edge E;Vertex V;int Nv, i;scanf("%d", &Nv); /* 讀入頂點(diǎn)個(gè)數(shù) */Graph = CreateGraph(Nv); /* 初始化有Nv個(gè)頂點(diǎn)但沒有邊的圖 */ scanf("%d", &(Graph->Ne)); /* 讀入邊數(shù) */if ( Graph->Ne != 0 ) { /* 如果有邊 */ E = (Edge)malloc(sizeof(struct ENode)); /* 建立邊結(jié)點(diǎn) */ /* 讀入邊,格式為"起點(diǎn) 終點(diǎn) 權(quán)重",插入鄰接矩陣 */for (i=0; i<Graph->Ne; i++) {scanf("%d %d %d", &E->V1, &E->V2, &E->Weight); /* 注意:如果權(quán)重不是整型,Weight的讀入格式要改 */InsertEdge( Graph, E );}} /* 如果頂點(diǎn)有數(shù)據(jù)的話,讀入數(shù)據(jù) */for (V=0; V<Graph->Nv; V++) scanf(" %c", &(Graph->Data[V]));return Graph; }總結(jié)
以上是生活随笔為你收集整理的图的建立-邻接矩阵表示(C语言)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2023全球总决赛奖金分配出炉!LPL输
- 下一篇: 图的建立-邻接表表示(C语言)