顶点表记录了边链表的第一个头指针*firstedge用于遍历;边表每个节点都有一个指针*nextedge指向下一个节点;建立graph(图)的结构体方便访问和存储;
#include <iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
struct edgenode{//边表
int len; //边长度
int tonode; //边指向节点的编号
edgenode *nextedge;
};
struct vernode{ //顶点表
//char nodechar;
edgenode *firstedge;
};
struct graph{
int edgsum,versum; //edgesum为边的总个数,versum为顶点个数
vernode nd[100]; //顶点表数组
}g;
int main()
{
scanf("%d%d",&g.versum,&g.edgsum);
for(int i=1;i<=g.versum;i++){
//g.nd[i].nodechar= //输入节点存放的值如 A B C
g.nd[i].firstedge=NULL; //初始化顶点表
}
for(int i=1;i<=g.edgsum;i++){
int a,b,c;
scanf("%d%d%d",&a,&b,&c); //abc为 起点 终点和边长度
edgenode *temp;
temp=(edgenode*)malloc(sizeof(edgenode));
temp->nextedge=g.nd[a].firstedge; //使用头插法插入边
g.nd[a].firstedge=temp;
}
return 0;
}
/*
3 3
1 2 3
2 3 3
1 3 4
*/