1. 程式人生 > >圖論知識小結1-使用陣列模擬實現鄰接表

圖論知識小結1-使用陣列模擬實現鄰接表

//普通一維陣列模擬實現
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()函式,不然會陷入死迴圈