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; } }
相关推荐
- Sept-, Hapta-: 表示7 - Oct: 表示8 - Enn-: 表示9 - Dec-, Deka-: 表示10 3. 常用数学词汇: - Abscissa: 横坐标 - Absolute Value: 绝对值 - Acute Angle: 锐角 - Adjacent Angle: 邻角 - Addition: ...
1. **图的遍历**: - 图的遍历是访问图中所有顶点的过程,常见的方法有深度优先搜索(DFS)和广度优先搜索(BFS)。这两种方法在解决图的问题中起到基础性的作用,例如寻找路径、判断连通性等。 2. **有环图的应用...
- 核电荷数为13的元素是铝(Al),其原子结构表示图为:(外壳示意,内层略去)\[\begin{array}{ccccc} & & & \bullet & \\ & & \bullet & & \bullet \\ \bullet & & & & \\ \end{array}\] 10. 元素周期表位置与...
1. 速度-时间图像(v-t图): - 图像的斜率代表加速度:当图像斜率为正时,物体加速;斜率为负时,物体减速;斜率不变时,物体做匀速直线运动。 - 图像上的曲线表明速度随时间非均匀变化,即物体的加速度在改变。 ...
- **Picture**:设置图片。 - **RightToLeft**:设置是否从右到左布局。取值为: - True:从右到左 - False:从左到右 - **ScaleHeight**:设置缩放高度。 - **ScaleLeft**:设置缩放宽度的左侧位置。 - **...
1. 条形图:描述定类或定序变量的分布,用长条的高度来表示变量不同取值下的频数。 2. 线图:描述连续性变量的变化趋势,非连续性变量通常不宜采用。 3. 面积图:描述连续性变量的分布,用面积来表示变量在不同取值...
2. 组合命名:结合元素类型和功能,如"form-login"表示登录表单,"list-news"表示新闻列表。 3. 交互状态命名:对于有交互行为的元素,应区分不同状态,如"btn-search-hover"代表搜索按钮的悬停状态,"btn-search-...
- 供应商信息:PZ2EZBYRLN7R7DL1L248 - 校验码:46 - **AllEurope**:提供欧洲地区的地图服务。 - 版本:10.0 - 生效日期:2019年1月1日 - 许可证数量:2048 - 许可证密钥:CDEEC0517B3DC6652E40 - 供应商...
- **坎类**:用“K”表示,后面跟一个字符,如“K(U)”。“K”代表坎类,“U”代表曲线型。数字则代表具体类型: - **0**:陡坎 - **1**:加固陡坎 - **2**:斜坡 - **3**:加固斜坡 - **4**:垄 - **5**:陡...
#### 1. Αα (Alpha / 阿尔法) - **大写**:Α - **小写**:α - **发音**:/a:lf/ - **中文发音**:阿尔法 - **用途**:在概率统计中常用来表示显著性水平。 #### 2. Ββ (Beta / 贝塔) - **大写**:Β - **小写...
5. **选择语言**:在图20中选择安装的语言环境,在这里选择6,表示安装过程中使用简体中文,然后按下Enter。 - 图20:选择语言。 6. **配置网络**:在图22的“欢迎”屏幕中,进入正在完成Solaris10系统标识…配置...
图的创建完成,该图的邻接表表示为: 0:1-->1-->2-->NULL 1:2-->0-->3-->4-->NULL 2:3-->0-->5-->6-->NULL 3:4-->1-->7-->NULL 4:5-->7-->1-->NULL 5:6-->2--&...
1. 词汇与短语: - feel happy: 感到开心 - afraid: 害怕 - knee: 膝盖 - afraid of: 害怕... - sad: 伤心 - laugh: 笑 - enough: 足够的 - doughnut: 面包圈 - correct: 正确的 - down: 情绪低落 - have...
计算机基础和Windows 7是计算机科学的入门课程,包含了计算机硬件、软件操作和基本概念。以下是对期中考试试题部分的详细解释: 1. 快捷键与键名功能解释: - Ctrl+C:复制选中的内容。 - Ctrl+S:保存当前文件或...
- 表示操作:denotes an operation(::=) - 比例符号:ratiosign(::) - 绝对值:the absolute value of(|x|) 3. 函数与计算: - 自然对数的底数:the base of natural logarithms(e ≈ 2.71828) - 阶乘...
- **playState**:播放状态,如1表示停止、2表示暂停等。 - **controls**:控制播放器的方法,例如`controls.play`、`controls.pause`、`controls.stop`等。 - **settings.volume**:音量设置,范围为0-100。 - **...
### ITU-R BT.1120-7建议书知识点详解 #### 1. 概述 ITU-R BT.1120-7建议书详细规定了高清晰度电视(High Definition Television, HDTV)演播室信号数字接口的技术标准。这一标准确保了不同HDTV系统之间的兼容性和...
1. **词汇和词组**: - `girl`:女孩 - `city`:城市 - `summer`:夏天 - `autumn`:秋天 - `winter`:冬天 - `spring`:春天 - `better`:更好 - `best`:最好 - `kite`:风筝 - `plant`:种植 - `...
波形图中,每个码元对应一个特定的时间间隔,通过高低电平的变化来表示“0”或“1”。通过波形图可以直观地理解B码的结构和编码规则,对于实际应用中的信号解析非常有帮助。 综上所述,IRIG-B码作为一种标准的时间...
1. **状态转换图的设计**: 设计一个状态转换图来表示如何识别各种类型的单词。例如,对于无符号数的识别,状态转换图包括了整数、小数和科学计数法等多种情况。 - **状态定义**: - `<无符号数>`: 0 - `<余留无...