數(shù)據(jù)結(jié)構(gòu)教程第二十八課圖的存儲(chǔ)結(jié)構(gòu)

字號(hào):

教學(xué)目的: 掌握?qǐng)D的二種存儲(chǔ)表示方法
    教學(xué)重點(diǎn): 圖的數(shù)組表示及鄰接表表示法
    教學(xué)難點(diǎn): 鄰接表表示法
    授課內(nèi)容:
    一、數(shù)組表示法
    用兩個(gè)數(shù)組分別存儲(chǔ)數(shù)據(jù)元素(頂點(diǎn))的信息和數(shù)據(jù)元素之間的關(guān)系(邊或弧)的信息。
    // 圖的數(shù)組(鄰接矩陣)存儲(chǔ)表示
    #define INFINITY INT_MAX //大值無(wú)窮大
    #define MAX_VERTEX_NUM 20 //大頂點(diǎn)個(gè)數(shù)
    typedef enum{DG,DN,AG,AN} GraphKind;//有向圖,有向網(wǎng),無(wú)向圖,無(wú)向網(wǎng)
    typedef struct ArcCell{
    VRType adj; //VRType是頂點(diǎn)關(guān)系類(lèi)型。對(duì)無(wú)權(quán)圖,用1或0表示相鄰否,對(duì)帶權(quán)圖,則為權(quán)值類(lèi)型
    InfoType *info; //該弧相關(guān)停息的指針
    }ArcCell,AdjMatrix[max_vertex_num][max_vertex_num];
    tpyedef struct{
    VertexType vexs[MAX_VERTEX_NUM]; //頂點(diǎn)向量
    AdjMatrix arcs; //鄰接矩陣
    int vexnum,arcnum; //圖的當(dāng)前頂點(diǎn)數(shù)和弧數(shù)
    GraphKind kind; //圖的種類(lèi)標(biāo)志
    }MGraph;