无向图的生成
#include "stdio.h"
#include "stdlib.h"
#include "io.h"
#include "math.h"
#include "time.h"#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXVEX 100 /* 最大頂點數(shù),應(yīng)由用戶定義 */
#define INFINITY 65535typedef int Status; /* Status是函數(shù)的類型,其值是函數(shù)結(jié)果狀態(tài)代碼,如OK等 */
typedef char VertexType; /* 頂點類型應(yīng)由用戶定義 */
typedef int EdgeType; /* 邊上的權(quán)值類型應(yīng)由用戶定義 */
typedef struct
{VertexType vexs[MAXVEX]; /* 頂點表 */EdgeType arc[MAXVEX][MAXVEX];/* 鄰接矩陣,可看作邊表 */int numNodes, numEdges; /* 圖中當(dāng)前的頂點數(shù)和邊數(shù) */
}MGraph;/* 建立無向網(wǎng)圖的鄰接矩陣表示 */
void CreateMGraph(MGraph *G)
{int i,j,k,w;printf("輸入頂點數(shù)和邊數(shù):\n");scanf("%d,%d",&G->numNodes,&G->numEdges); /* 輸入頂點數(shù)和邊數(shù) */for(i = 0;i <G->numNodes;i++) /* 讀入頂點信息,建立頂點表 */scanf(&G->vexs[i]);for(i = 0;i <G->numNodes;i++)for(j = 0;j <G->numNodes;j++)G->arc[i][j]=INFINITY; /* 鄰接矩陣初始化 */for(k = 0;k <G->numEdges;k++) /* 讀入numEdges條邊,建立鄰接矩陣 */{printf("輸入邊(vi,vj)上的下標(biāo)i,下標(biāo)j和權(quán)w:\n");scanf("%d,%d,%d",&i,&j,&w); /* 輸入邊(vi,vj)上的權(quán)w */G->arc[i][j]=w; G->arc[j][i]= G->arc[i][j]; /* 因為是無向圖,矩陣對稱 */}
}int main(void)
{ MGraph G; CreateMGraph(&G);return 0;
}
總結(jié)
- 上一篇: 注视点估计(二维法)
- 下一篇: 无向图的邻接表