1. 程式人生 > >圖--十字鏈表-筆記

圖--十字鏈表-筆記

其中 order borde body div weight idt dlink span

參考來源:大話數據結構。

對於有向圖來說,鄰接鏈表無法同時考慮到邊的入度和出度問題,故有了十字鏈表這種數據結構。

頂點表 :

data firstin firstout

其中firstin表示入邊表頭指針,表示該頂點的入邊表中的第一個結點,firstout表示出邊表頭指針,指向該頂點的出邊表的第一個結點。

邊表:

tailvex headvex headlink

taillink

tailvex表示該邊的起點在頂點表中的下標, headvex表示該邊的終點在頂點表中的下標。headlink表示以headvex為終點的一系列邊,taillink表示以tailvex為起點的一系列邊。

代碼如下:

/*********十字鏈表***********/

/************邊表*************/
class EdgeNode 
{
public:
    int tailvex;   //該邊的起點
    int headvex; //該邊的終點
    int weight;   //邊的權重
    EdgeNode *headlink = NULL; //入邊表指針域
    EdgeNode *taillink = NULL; //出邊表指針域
    EdgeNode(int _tail, int _head, int _weight) :
    tail(_tail), head(_head), weight(_weight) {};

};

/**********頂點表*******/ class VertexNode { public: int data; EdgeNode *firstin; //入度 EdgeNode *firstout;//出度 //int pValue; //int dist = infty; };

圖--十字鏈表-筆記