1.ArrayList+LinkedList
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Scanner;
public class Main {
static final int MAX=10;
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
ArrayList<LinkedList<Edge>> arrayList=new ArrayList<LinkedList<Edge>>(MAX);
for(int i=0;i<MAX;i++){
LinkedList<Edge> temp=new LinkedList<>();
arrayList.add(temp);
}
int T=cin.nextInt();
int from,to,weigth;
for(int i=0;i<T;i++){
from=cin.nextInt();
to=cin.nextInt();
//weigth=cin.nextInt();
weigth=0;
arrayList.get(from).add(new Edge(to,weigth));
}
for(int i=1;i<MAX;i++){
ArrayList<Edge> temp=arrayList.get(i);
if (temp.size()==0)
continue;
System.out.print(i+":");
for(Edge edge:temp){
System.out.print(i+"-"+edge.next+" ");
}
System.out.println();
}
}
}
class Edge{
public int next;
public int weigth;
Edge(){
}
Edge(int next,int weigth){
this.next=next;
this.weigth=weigth;
}
}
2.ArrayList嵌套
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
static final int MAX=10;
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
ArrayList<ArrayList<Edge>> arrayList=new ArrayList<ArrayList<Edge>>(MAX);
for(int i=0;i<MAX;i++){
ArrayList<Edge> temp=new ArrayList<>();
arrayList.add(temp);
}
int T=cin.nextInt();
int from,to,weigth;
for(int i=0;i<T;i++){
from=cin.nextInt();
to=cin.nextInt();
//weigth=cin.nextInt();
weigth=0;
arrayList.get(from).add(new Edge(to,weigth));
}
for(int i=1;i<MAX;i++){
ArrayList<Edge> temp=arrayList.get(i);
if (temp.size()==0)
continue;
System.out.print(i+":");
for(Edge edge:temp){
System.out.print(i+"-"+edge.next+" ");
}
System.out.println();
}
}
}
class Edge{
public int next;
public int weigth;
Edge(){
}
Edge(int next,int weigth){
this.next=next;
this.weigth=weigth;
}
}
效果图:
一种比领接表更节约空间的算法:链式前向星
该算法是用三个数组模拟链表的操作,分别表示链表的头结点、数据域、指针域,可自行百度了解