我对前向星的理解是:其实就是邻接表的另外一种表示方式,思想是一样的。
学过数据结构的都知道图有两种存储方式,一种是邻接表,另一种是邻接矩阵,其实还有一种是前向星,而链式前向星是在前向星基础上优化后的。
邻接表:效率高不好写;
邻接矩阵:好写效率低;
前向星:它是基于邻接表和邻接矩阵之间的;
链式前向星:好写效率相对前向星要好多;
先写前向星:构造方法,就是把每条边的起点,终点,边权存入数组中,在进行排序,就行了。但是一个排序却需要至少也要来个快排(O(nlogn)),但是链式前向星却不需要排序,就省下了排序的时间。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn = 1010;
int n,m;
int first[maxn];//头结点
struct node{
int u;//起点
int v;//终点
int w;//边权
}a[maxn];