您好,登錄后才能下訂單哦!
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef char VertexType[5]; //存儲頂點值 #define MaxSize 50 #define INIT 10000 typedef struct //鄰接矩陣,存儲弧的信息 { int adj; }ArcNode,AdjMatrix[MaxSize][MaxSize]; typedef struct //圖的類型定義 { VertexType vex[MaxSize]; //存儲頂點值 AdjMatrix arc; //鄰接矩陣 int arcnum,vexnum; //前者弧數,后者頂點數 }MGraph; void CreateVertex(MGraph *G) //創建鄰接矩陣 { int i,j,k,w; VertexType v1,v2; printf("請輸入有向帶權圖的頂點數和弧數:(空格間隔)\n"); scanf("%d%d",&(*G).vexnum,&(*G).arcnum); printf("請輸入%d個頂點的值:\n",G->vexnum); for ( i=0 ; i<G->vexnum ; i++ ) { scanf("%s",&G->vex[i]); } for ( i=0 ; i<G->vexnum ; i++ ) //初始化鄰接矩陣 { for ( j=0 ; j<G->vexnum ; j++ ) { G->arc[i][j].adj = INIT; } } printf("請輸入%d條弧的弧尾,弧頭和權值:\n",G->arcnum); for ( k=0 ; k<G->arcnum ; k++ ) { scanf("%s%s%d",v1,v2,&w); i = LocateVertex(*G,v1); j = LocateVertex(*G,v2); G->arc[i][j].adj = w; } } int LocateVertex(MGraph G,VertexType v) //索引 { int i; for ( i=0 ; i<G.vexnum ; i++ ) { if ( strcmp(G.vex[i],v) == 0 ) { return i; } } return -1; } void DisplayVertex(MGraph G) //輸出 { int i,j; printf("%d個頂點的值為:",G.vexnum); for ( i=0 ; i<G.vexnum ; i++ ) { printf("%s ",G.vex[i]); } printf("\n有向帶權圖\n"); printf("序號:"); for ( i=0 ; i<G.vexnum ; i++ ) { printf("%8d",i); } printf("\n"); for ( i=0 ; i<G.vexnum ; i++ ) { printf("%8d",i); for ( j=0 ; j<G.vexnum ; j++ ) { printf("%8d",G.arc[i][j].adj); } printf("\n"); } } int main(void) { MGraph G; printf("創建圖:\n"); CreateVertex(&G); printf("輸出圖:"); DisplayVertex(G); printf("\n"); return 0; }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。