인접 목록은 그래프의 체인 저장 방법입니다. 해당 데이터 구조는 노드와 인접 점의 두 부분으로 구성됩니다.
인접 목록은 무방향 그래프, 유방향 그래프 및 네트워크를 나타내는 데 사용할 수 있습니다. 이는 무방향 그래프를 사용하여 설명됩니다.
package graph; import java.util.Scanner; public class CreateALGraph { static final int MaxVnum = 100; // 顶点数最大值 public static void main(String[] args) { ALGraph G = new ALGraph(); for (int i = 0; i < G.Vex.length; i++) { G.Vex[i] = new VexNode(); } CreateALGraph(G); // 创建有向图邻接表 printg(G); // 输出邻接表 } static int locatevex(ALGraph G, char x) { for (int i = 0; i < G.vexnum; i++) // 查找顶点信息的下标 if (x == G.Vex[i].data) return i; return -1; // 没找到 } // 插入一条边 static void insertedge(ALGraph G, int i, int j) { AdjNode s = new AdjNode(); s.v = j; s.next = G.Vex[i].first; G.Vex[i].first = s; } // 输出邻接表 static void printg(ALGraph G) { System.out.println("----------邻接表如下:----------"); for (int i = 0; i < G.vexnum; i++) { AdjNode t = G.Vex[i].first; System.out.print(G.Vex[i].data + ": "); while (t != null) { System.out.print("[" + t.v + "]\t"); t = t.next; } System.out.println(); } } // 创建有向图邻接表 static void CreateALGraph(ALGraph G) { int i, j; char u, v; System.out.println("请输入顶点数和边数:"); Scanner scanner = new Scanner(System.in); G.vexnum = scanner.nextInt(); G.edgenum = scanner.nextInt(); System.out.println("请输入顶点信息:"); for (i = 0; i < G.vexnum; i++)//输入顶点信息,存入顶点信息数组 G.Vex[i].data = scanner.next().charAt(0); for (i = 0; i < G.vexnum; i++) G.Vex[i].first = null; System.out.println("请依次输入每条边的两个顶点u,v"); while (G.edgenum-- > 0) { u = scanner.next().charAt(0); v = scanner.next().charAt(0); i = locatevex(G, u); // 查找顶点 u 的存储下标 j = locatevex(G, v); // 查找顶点 v 的存储下标 if (i != -1 && j != -1) insertedge(G, i, j); else { System.out.println("输入顶点信息错!请重新输入!"); G.edgenum++; // 本次输入不算 } } } } // 定义邻接点类型 class AdjNode { int v; // 邻接点下标 AdjNode next; // 指向下一个邻接点 } // 定义顶点类型 class VexNode { char data; // VexType为顶点的数据类型,根据需要定义 AdjNode first; // 指向第一个邻接点 } // 定义邻接表类型 class ALGraph { VexNode Vex[] = new VexNode[CreateALGraph.MaxVnum]; int vexnum; // 顶点数 int edgenum; // 边数 }
위 내용은 인접 목록을 사용하여 Java에 그래프를 저장하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!