链式前向星其实就是模拟指针,自己定义的数组存的“地址”,然后结构体里面有一个变量专门记录下一个数据的“地址”。
自己找着别人的代码写一遍,加深记忆。
cnt可以是从1开始的。
#include<bits/stdc++.h>
using namespace std;
#define MAX 5000
struct edge{
int v;
int e;
int next;
}mp[MAX];
int head[MAX];
int cnt=0;
void add(int op,int ed,int val){
mp[cnt].e=ed;
mp[cnt].v=val;
mp[cnt].next=head[op];
head[op]=cnt++;
}
int main(){
memset(head,-1,sizeof(head));
int n;
cin>>n;
int op,ed,val;
for(int i=0;i<n;i++){
cin>>op>>ed>>val;
add(op,ed,val);
}
int start;
cin>>start;
for(int i=head[start];i!=-1;i=mp[i].next){
cout<<start<<' '<<mp[i].e<<' '<<mp[i].v<<endl;
}
return 0;
}