zoukankan      html  css  js  c++  java
  • 领接表存储图(用数组模拟领接表)

     1 import java.util.Scanner;
     2 import java.util.LinkedList;
     3 import java.util.LinkedList;
     4 import java.util.Scanner;
     5 import java.util.TreeSet;
     6 import java.util.Scanner;
     7 
     8 public class One {
     9     public static void main(String args[]) {
    10         int n, m;
    11         Scanner scanner = new Scanner(System.in);
    12         System.out.println("请输入顶点数和边数");
    13         n = scanner.nextInt();
    14         m = scanner.nextInt();
    15         B a[] = new B[m+1];//存放各条边的两个顶点及它们的权值
    16         int first[]=new int[n+1];//first[i]存放顶点i的第一条边的编号
    17         int next[]=new int[m+1];//next[m]存放编号为m的边的下一条边的编号
    18         //领接表建立(数组模拟),领接表是从表头插入的,倒序遍历
    19         System.out.println("各条边:");
    20         for(int i=1;i<=m;i++){
    21             a[i]=new B(scanner.nextInt(),scanner.nextInt(),scanner.nextInt());
    22             next[i]=first[a[i].u];
    23             first[a[i].u]=i;//存放点a[i].u的第一条边(倒序)的序号
    24             
    25         }
    26         //领接表遍历(按照点的顺序)
    27         System.out.println("遍历结果:");
    28         for(int i=1;i<=n;i++){//遍历n个顶点出发的边
    29             int k=first[i],j=0;//令k等于i点的第一条边
    30             while(k!=0){//
    31             System.out.println(a[k].u+" "+a[k].v+" "+a[k].w);    
    32             k=next[k];
    33             }
    34         }
    35     }
    36 }
    37 
    38 class B {//存放一条边的信息(边的起点、末点、权值)
    39     int u, v, w;
    40 
    41     B(int u, int v, int w) {
    42         this.u = u;
    43         this.v = v;
    44         this.w = w;
    45     }
    46 }
    领接表存储图

    结果:

    领接表存储图理解图解:

  • 相关阅读:
    iOS UI基础05
    iOS UI基础04
    document.referrer
    节点
    特殊符号编码
    margin和padding的百分比
    XSS要点总结
    页面加载的过程
    函数声明和函数表达式
    jpg和png
  • 原文地址:https://www.cnblogs.com/qinmeizhen/p/6832691.html
Copyright © 2011-2022 走看看