链式前向星总结
- 测试时尽量使用静态数组
测试时尽量使用静态数组
value和next数组是可以被cnt瞬间归零的,所以只要静态给狗他俩的空间即可,使用cnt=0相当于立刻清空所有内容。
head也应该设置为静态,因为无论如何head的值都要全改为-1;
链式前向星存储的是点对点的值,比如a点对b点值为1等等,head的值为a,value_b的值为b
不需要Arrays.fill(next,-1),因为next的状态是由head转移过来,只要求head开始状态全为正确的状态即即刻
java">public class Main{public static final int maxn=100000;//最多的边不过maxnpublic static int[] head=new int[1000]; //点数不过1000public 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类的属性值是可有可无的