关于数据结构:构造无向网邻接矩阵

34次阅读

共计 962 个字符,预计需要花费 3 分钟才能阅读完成。

#include <iostream>
using namespace std;
#define MaxInt 32767                    
#define MVNum 100                           
#define OK 1                        
typedef char VerTexType;                      
typedef int ArcType;                          
typedef struct{VerTexType vexs[MVNum];                    
    ArcType arcs[MVNum][MVNum];               
    int vexnum,arcnum;       
}AMGraph;
int LocateVex(AMGraph G , VerTexType v){for(int i = 0; i < G.vexnum; ++i)
        if(G.vexs[i] == v)
            return i;
   return -1;
}
// 创立无向网
int CreateUDN(AMGraph &G){ 
    int i , j , k;
    cout <<"总顶点数 总边数:";
    cin >> G.vexnum >> G.arcnum;                        
    for(i = 0; i < G.vexnum; ++i){cout << "第" << (i+1) << "个点的名称:";
        cin >> G.vexs[i];                                    
    }
    for(i = 0; i < G.vexnum; ++i)                             
        for(j = 0; j < G.vexnum; ++j)   
            G.arcs[i][j] = MaxInt;  
    for(k = 0; k < G.arcnum;++k){                            
        VerTexType v1 , v2;
        ArcType w;
        cout << "第" << (k + 1) << "条边附丽的顶点及权值:";
        cin >> v1 >> v2 >> w;                                
        i = LocateVex(G, v1);  j = LocateVex(G, v2);         
        G.arcs[i][j] = w;                                     
        G.arcs[j][i] = G.arcs[i][j];                         
    }    
    return OK; 
}
int main(){
    AMGraph G;     
    int i , j;
    CreateUDN(G);
    for(i = 0 ; i < G.vexnum ; ++i){for(j = 0; j < G.vexnum; ++j){if(j != G.vexnum - 1){if(G.arcs[i][j] != MaxInt)
                    cout << G.arcs[i][j] << "\t";
                else
                    cout << "∞" << "\t";
            }
            else{if(G.arcs[i][j] != MaxInt)
                    cout << G.arcs[i][j] <<endl;
                else
                    cout << "∞" <<endl;
            }
        }
    }
    return 0;
}


`

正文完
 0