一.序 鄰接表是鄰接矩陣的改進。當圖中的邊數少于頂點個數時,鄰接矩陣中會出現大量的零元素,如果這些零元素,將消耗大量的內存。為此,可以把鄰接矩陣的n行改為n個鏈表,把同一個頂點出發的邊鏈接到同一個稱之為邊鏈表的單鏈表中,單鏈表的每個結點代表一條邊,叫做邊結點,結點中保存有與該邊相關聯的另一頂點的頂點下標dest和指向同一鏈表中下一邊結點的指針link.如果帶權圖時,結點中還要保存改邊上的權值cost.頂點i的出邊表的表頭指針adj在頂點表的下標為i的頂點記錄中,該記錄還保存了該頂點的其他信息。 二.模型
三.實現 源碼請戳https://github.com/zhangzhuo233/Data_Structure/tree/master/Graph
測試代碼
/*Test.cpp**2016.2.16*/#include"GraphLink.h"#include<vld.h>int main(){ GraphLink<char> gl; gl.ShowGraph(); gl.InsertVertex('A'); gl.InsertVertex('B'); gl.InsertVertex('C'); gl.InsertVertex('D'); gl.ShowGraph(); gl.InsertEdge('A', 'B'); gl.InsertEdge('A', 'C'); gl.InsertEdge('B', 'D'); gl.ShowGraph(); cout<<gl.GetFirstNeighbor('A')<<endl; cout<<gl.GetNextNeighbor('A', 'B')<<endl; gl.RemoveVertex('A'); gl.RemoveVertex('B'); gl.RemoveVertex('C'); gl.RemoveVertex('D'); gl.ShowGraph();}新聞熱點
疑難解答