圖論知識小結1-使用陣列模擬實現鄰接表
阿新 • • 發佈:2018-12-11
//普通一維陣列模擬實現 const int MAX_N = 100; const int MAX_M = 10000; //建立MAX_N條邊 struct edge{ int v; //當前邊的終點 int last_eid; //上一條相同起點的邊的編號 }edge[MAX_M]; int latest_eid_of_u[MAX_N], temp_eid; void init(){ memset(p, -1, sizeof(p)); //開始所有的起點u沒有被插入過邊,編號為-1 temp_eid = 0; } void insert(int u, int v){ edge[eid].v = v; edge[eid].last_eid = latest_eid_of_u[u]; latest_eid_of_u[u] = eid; eid++; } void visit(int u){ for(int eid = latest_eid_of_u[u] ; eid != -1 ; eid = edge[eid].last_eid){ cout << "(" << u << "," << edge[eid].v << ")" << endl; } }
易錯的地方
1.一定要加常量,不然無法生成邊結構體
2.在主函式中一定要記得呼叫的init()函式,不然會陷入死迴圈