`
iluoxuan
  • 浏览: 579916 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

7: 图-1 图表示

 
阅读更多

1 : 图: Graph:

  图:  无向图, 有向图

 

2: 图表示:  图的邻接矩阵 和 图的邻接表

 

主要以 图的 邻接表为主:

 

邻接表表示法将图以邻接表(adjacency  lists)的形式存储在计算机中。所谓图的邻接表,也就是图的所有节点的邻接表的集合;而对每个节点,它的邻接表就是它的所有出弧。邻接表表示法就是对图的每个节点,用一个单向链表列出从该节点出发的所有弧,链表中每个单元对应于一条出弧。为了记录弧上的权,链表中每个单元除列出弧的另一个端点外,还可以包含弧上的权等作为数据域。图的整个邻接表可以用一个指针数组表示。例如,例7所示的图,邻接表表示为

 

可以很方便的知道  点的邻接点

 

这种结构适合查找顶点及邻接点的信息,查顶点的度,增加或删除顶点和边(弧)也很方便,

但因指针多占用了存储空间,另外,某两顶点间是否有边(弧)也不如邻接矩阵那么清楚。

对有向图的邻接表,查顶点出度容易,而查顶点入度却困难,要遍历整个邻接表。

要想查入度象查出度那样容易,

就要建立逆邻接表

 

 

package com.algorithm.common.graph;

import com.algorithm.common.Bag;

/**
 * 无权重无向图 (邻接表表示)
 * @author lijunqing
 */
public class Graph {

    /**
     * 顶点数
     */
    private int V;

    /**
     * 边数
     */
    private int E;

    /**
     * 邻接表
     */
    private Bag<Integer>[] adj;

    public Graph(int v) {
        this.V=v;
        this.E=0;
        adj=(Bag<Integer>[])new Bag[V];
        for(int i=0; i < V; i++) { // 初始化邻接表
            adj[i]=new Bag<Integer>();
        }
    }

    public void addEdge(int v, int w) {
        if(v < 0 || v > V) {
            throw new IndexOutOfBoundsException();
        }
        if(w < 0 || w > V) {
            throw new IndexOutOfBoundsException();
        }
        E++;
        adj[v].add(w);
        adj[w].add(v);
    }
    
    /**
     * 返回Iterable可以遍历
     * @param v
     * @return
     */
    public Iterable<Integer> adj(int v) {
        if(v < 0 || v > V) {
            throw new IndexOutOfBoundsException();
        }
        return adj[v];
    }

    public int V() {
        return V;
    }

    public int E() {
        return E;
    }
}

 

 

 

 

分享到:
评论

相关推荐

    数学的英语单词(.doc

    - Sept-, Hapta-: 表示7 - Oct: 表示8 - Enn-: 表示9 - Dec-, Deka-: 表示10 3. 常用数学词汇: - Abscissa: 横坐标 - Absolute Value: 绝对值 - Acute Angle: 锐角 - Adjacent Angle: 邻角 - Addition: ...

    算法与数据结构:19-图5.pdf

    1. **图的遍历**: - 图的遍历是访问图中所有顶点的过程,常见的方法有深度优先搜索(DFS)和广度优先搜索(BFS)。这两种方法在解决图的问题中起到基础性的作用,例如寻找路径、判断连通性等。 2. **有环图的应用...

    必修2同步巩固练习解析:1-2-1.doc

    - 核电荷数为13的元素是铝(Al),其原子结构表示图为:(外壳示意,内层略去)\[\begin{array}{ccccc} & & & \bullet & \\ & & \bullet & & \bullet \\ \bullet & & & & \\ \end{array}\] 10. 元素周期表位置与...

    高中物理:速度-时间图像和位移-时间图像专题训练.pdf

    1. 速度-时间图像(v-t图): - 图像的斜率代表加速度:当图像斜率为正时,物体加速;斜率为负时,物体减速;斜率不变时,物体做匀速直线运动。 - 图像上的曲线表明速度随时间非均匀变化,即物体的加速度在改变。 ...

    vb控件属性大全.txt

    - **Picture**:设置图片。 - **RightToLeft**:设置是否从右到左布局。取值为: - True:从右到左 - False:从左到右 - **ScaleHeight**:设置缩放高度。 - **ScaleLeft**:设置缩放宽度的左侧位置。 - **...

    应用统计软件介绍:07-SPSS常用统计图.ppt

    1. 条形图:描述定类或定序变量的分布,用长条的高度来表示变量不同取值下的频数。 2. 线图:描述连续性变量的变化趋势,非连续性变量通常不宜采用。 3. 面积图:描述连续性变量的分布,用面积来表示变量在不同取值...

    Web UI 设计命名规范

    2. 组合命名:结合元素类型和功能,如"form-login"表示登录表单,"list-news"表示新闻列表。 3. 交互状态命名:对于有交互行为的元素,应区分不同状态,如"btn-search-hover"代表搜索按钮的悬停状态,"btn-search-...

    arcgis10授权文件txt

    - 供应商信息:PZ2EZBYRLN7R7DL1L248 - 校验码:46 - **AllEurope**:提供欧洲地区的地图服务。 - 版本:10.0 - 生效日期:2019年1月1日 - 许可证数量:2048 - 许可证密钥:CDEEC0517B3DC6652E40 - 供应商...

    CASS7.0野外操作地物代码

    - **坎类**:用“K”表示,后面跟一个字符,如“K(U)”。“K”代表坎类,“U”代表曲线型。数字则代表具体类型: - **0**:陡坎 - **1**:加固陡坎 - **2**:斜坡 - **3**:加固斜坡 - **4**:垄 - **5**:陡...

    希腊字母读音表

    #### 1. Αα (Alpha / 阿尔法) - **大写**:Α - **小写**:α - **发音**:/a:lf/ - **中文发音**:阿尔法 - **用途**:在概率统计中常用来表示显著性水平。 #### 2. Ββ (Beta / 贝塔) - **大写**:Β - **小写...

    新手入门:Solaris-10系统安装图解.docx

    5. **选择语言**:在图20中选择安装的语言环境,在这里选择6,表示安装过程中使用简体中文,然后按下Enter。 - 图20:选择语言。 6. **配置网络**:在图22的“欢迎”屏幕中,进入正在完成Solaris10系统标识…配置...

    数据结构——图的两种实现办法及两种遍历

    图的创建完成,该图的邻接表表示为: 0:1--&gt;1--&gt;2--&gt;NULL 1:2--&gt;0--&gt;3--&gt;4--&gt;NULL 2:3--&gt;0--&gt;5--&gt;6--&gt;NULL 3:4--&gt;1--&gt;7--&gt;NULL 4:5--&gt;7--&gt;1--&gt;NULL 5:6--&gt;2--&...

    13-14学年冀教七上Unit3同步练习Ⅱ.doc

    1. 词汇与短语: - feel happy: 感到开心 - afraid: 害怕 - knee: 膝盖 - afraid of: 害怕... - sad: 伤心 - laugh: 笑 - enough: 足够的 - doughnut: 面包圈 - correct: 正确的 - down: 情绪低落 - have...

    《计算机基础+WIN7》期中考试题.pdf

    计算机基础和Windows 7是计算机科学的入门课程,包含了计算机硬件、软件操作和基本概念。以下是对期中考试试题部分的详细解释: 1. 快捷键与键名功能解释: - Ctrl+C:复制选中的内容。 - Ctrl+S:保存当前文件或...

    GRE考试数学英文词汇

    - 表示操作:denotes an operation(::=) - 比例符号:ratiosign(::) - 绝对值:the absolute value of(|x|) 3. 函数与计算: - 自然对数的底数:the base of natural logarithms(e ≈ 2.71828) - 阶乘...

    media 参数大全

    - **playState**:播放状态,如1表示停止、2表示暂停等。 - **controls**:控制播放器的方法,例如`controls.play`、`controls.pause`、`controls.stop`等。 - **settings.volume**:音量设置,范围为0-100。 - **...

    ITU-R BT.1120-7 建议书 高清晰度电视演播室信号数字接口

    ### ITU-R BT.1120-7建议书知识点详解 #### 1. 概述 ITU-R BT.1120-7建议书详细规定了高清晰度电视(High Definition Television, HDTV)演播室信号数字接口的技术标准。这一标准确保了不同HDTV系统之间的兼容性和...

    新人教PEP版五年级下册小学英语期末完形与阅读专项复习.doc

    1. **词汇和词组**: - `girl`:女孩 - `city`:城市 - `summer`:夏天 - `autumn`:秋天 - `winter`:冬天 - `spring`:春天 - `better`:更好 - `best`:最好 - `kite`:风筝 - `plant`:种植 - `...

    IEEE-B码标准格式定义

    波形图中,每个码元对应一个特定的时间间隔,通过高低电平的变化来表示“0”或“1”。通过波形图可以直观地理解B码的结构和编码规则,对于实际应用中的信号解析非常有帮助。 综上所述,IRIG-B码作为一种标准的时间...

    实验一 词法分析程序实现

    1. **状态转换图的设计**: 设计一个状态转换图来表示如何识别各种类型的单词。例如,对于无符号数的识别,状态转换图包括了整数、小数和科学计数法等多种情况。 - **状态定义**: - `&lt;无符号数&gt;`: 0 - `&lt;余留无...

Global site tag (gtag.js) - Google Analytics