邻接表存储
#include<iostream>
using namespace std;
struct edge{
int nodeid;
int edge_value;
struct edge*next;
}mynode[1000];
struct node {
struct edge *next;
};
int main(){
int m,n,u,v,w;
struct edge * new_edge;
cin>>m>>n;
for(int i=0;i<m;i++){
cin>>u>>v>>w;
new_edge=new edge;
new_edge->nodeid=v;
new_edge->edge_value=w;
new_edge->next=mynode[u].next; //头插法
mynode[v].next=new_edge;
}
return 0;
}
vector存储
#include<bits/stdc++.h>
using namespace std;
struct edge{
int value;
int nodeid;
};
int main()
{
int m,n,u,v,w;
cin>>n>>m;
/* vector<vector<int> > mynode (n); //ÎÞȨͼ
for(int i=0;i<m;i++){
cin>>u>>v;
mynode[u].push_back(v);
mynode[v].push_back(u);
}*/
vector <vector <edge> >mynode(n);
edge p;
for(int i=0;i<m;i++){
cin>>u>>v>>w;
p.value=w;
p.nodeid=v;
mynode[u].push_back(p);
}
for(int i =0;i<n;i++){
int k=mynode[i].size();
cout<<"i="<<i<<" "<<"k="<<k<<endl;
for(int j=0;j<k;j++)
cout<<mynode[i][j].nodeid<<" "<<"("<<mynode[i][j].value<<")";
cout<<endl;
}
}
动态链表,静态存储
#include<bits/stdc++.h>
using namespace std;
#define MAX 1000
struct edge{
int nodeid;
int value;
struct edge*next;
}myedge[MAX];
struct node {
struct edge *next;
}mynode[MAX];
int main()
{
int k=0,n,m,u,v,w;
cin>>n>>m;
memset(mynode , 0 ,sizeof mynode);
for(int i=0;i<m;i++){
cin>>u>>v>>w;
myedge[k].nodeid=v;
myedge[k].value=w;
myedge[k].next=mynode[u].next;
mynode[u].next=&myedge[k];
k++;
}
struct edge *e=mynode[1].next;
while(e){
cout<<"e->nodeid="<<e->nodeid<<" "<<"e->value"<<e->value<<endl;
e=e->next;
}
}