链式前向星总结
测试时尽量使用静态数组
value和next数组是可以被cnt瞬间归零的,所以只要静态给狗他俩的空间即可,使用cnt=0相当于立刻清空所有内容。
head也应该设置为静态,因为无论如何head的值都要全改为-1;
链式前向星存储的是点对点的值,比如a点对b点值为1等等,head的值为a,value_b的值为b
不需要Arrays.fill(next,-1),因为next的状态是由head转移过来,只要求head开始状态全为正确的状态即即刻
public class Main{
public static final int maxn=100000;//最多的边不过maxn
public static int[] head=new int[1000]; //点数不过1000
public static int[] value_b=new int[maxn],next=new int[maxn],value =new int[maxn];//边的属性除了value还可以创建其他属性数组
public static int cnt=0;
public static void clear(){
cnt=0;
Arrays.fill(head,-1);
}
public static add(int a,int b,int v){ //核心代码
next[cnt]=head[a];
head[a]=cnt;
value_b[cnt]=b;
value[cnt++]=v;
}
public static void main(String[] args){
int[][] matrix=new int[]{{1,2,5},{2,3,3},{1,3,6}};//表示1->2,2->3,1->3的边
for(int i=0;i<matrix.length;i++){
add(matrix[i][0],matrix[i][1],matrix[i][2]);
}
}
head和next是链式前向星的主要框架,而其他的value类的属性值是可有可无的