关于前向星以及链式前向星的描述可以去这里看链式前向星及其简单应用讲的确实很详细。
下面是链式前向星的c++代码实现
//链式前向星存图方式
/*
5 7
1 2
2 3
3 4
1 3
4 1
1 5
4 5
*/
#include<iostream>
#include<cstring>
using namespace std;
const int size = 100;
struct edge
{
int to;//边的终点
int next;//与该边有相同起点的下一条边的存储位置
}Edge[size*size];
int head[size];//head[i] 表示以i为起点的第一条边(与输入顺序相反)的存储位置,一般初始化为-1
int cnt;
int N,M;//节点个数以及边的条数
void init()
{
cnt = 0;
memset(head,-1,sizeof(head));
}
void add(int from ,int to)
{
Edge[cnt].to = to;
Edge[cnt].next = head[from];
head[from] = cnt;
cnt++;
}
int main()
{
init();
cin>>N>>M;
int from,to;
for(int i=1;i<=M;i++)
{
cin>>from>>to;
add(from,to);
}
cout<<"链式前向星遍历:"<<endl;
for (int i=1;i<=N;i++)
{
int tmp = head[i];
while(tmp != -1)
{
cout<<i<<" "<<Edge[tmp].to<<endl;
tmp = Edge[tmp].next;
}
cout<<endl;
}
return 0;
}