//普通一维数组模拟实现
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()函数,不然会陷入死循环