1. 程式人生 > 實用技巧 >鄰接矩陣建圖

鄰接矩陣建圖

#include<iostream>
#define N 100
using namespace std;

struct Graph{
    int vertex_number;
    int edge_number;
    char vertex[N];
    int edge[N][N];
};
Graph* G;

int getVertexPosition(char v){
    for(int k=0;k<G->edge_number;k++){
        if(G->vertex[k]==v){
            return k;
        }
    }
    
return -1; } void createGraph(){ cout<<"請輸入各個頂點:"<<endl; for(int k=0;k<G->vertex_number;k++){ cin>>G->vertex[k]; } for(int i=0;i<G->vertex_number;i++){ for(int j=0;j<G->vertex_number;j++){ G->edge[i][j]=0; } } cout
<<"請輸入各個邊的鄰接點、權重:"<<endl; for(int k=0;k<G->edge_number;k++){ char v1,v2; int weight; cin>>v1>>v2>>weight; int i=getVertexPosition(v1); int j=getVertexPosition(v2); G->edge[i][j]=weight; } } void show(){ cout
<<"輸出各個頂點:"<<endl; for(int k=0;k<G->vertex_number;k++){ cout<<G->vertex[k]; } cout<<endl; cout<<"輸出鄰接矩陣:"<<endl; for(int i=0;i<G->vertex_number;i++){ for(int j=0;j<G->vertex_number;j++){ cout<<G->edge[i][j]; } cout<<endl; } } int main(){ G=new Graph(); cout<<"請輸入頂點個數、邊個數:"<<endl; cin>>G->vertex_number>>G->edge_number; createGraph(); show(); return 0; }