王彪-20162321《程序设计与数据结构2nd》-第十一周学习总结与实验报告
邻接矩阵实现
例图
分析
变量
- 需要一个链表来保存数据-即保存结点
- 需要一个二维数组来保存每个变得权值,有则填入具体数值,没有则用0
- 定义一个保存边个数的值
函数方法
- 得到图中边的个数
- 得到结点的数据
- 得到具体边的权值
- 插入结点,删除节点
- 插入边,删除边
- isEmpty,size
- 广度优先遍历,深度优先遍历
具体实践
- 插入,删除结点与边
我认为邻接矩阵的变换是根据结点来变化的。所以我先定义了构造函数它传入参数n,作为初始值,用来帮助实例化结点链表和二维数组。
public AMgroup (int n){
edges = new int [n][n];
myList = new ArrayList<>(n);
NumEdges = 0;
room = n;
}
插入结点并不改变二维数组本身,除非插入的结点个数大于初始参数n;但删除结点时就不得不考虑由于结点remove导致二维数组中该节点参与的横和列都不能填入值,0也不可以,应该移除此横和列,重新定义新的数组。
public void helpRemoveEdges(T item){
int position = myList.indexOf(item);
int[][] Newedge = new int[room-1][room-1];
for (int i=0;i<room;i++){
if (i==position){
continue;
}
if (i<position){
for (int j=0;j<room;j++){
if (j==position)
continue;
if (j<position)
Newedge[i][j]=edges[i][j];
if (j>position)
Newedge[i][j-1]=edges[i][j];
}
}
if (i>position){
for (int j=0;j<room;j++){
if (j==position)
continue;
if (j<position)
Newedge[i-1][j]=edges[i][j];
if (j>position)
Newedge[i-1][j-1]=edges[i][j];
}
}
}
edges = Newedge;
}
- 插入删除的具体代码
public void insertEdge(int x,int y,int weight){
edges[x][y]=weight;
NumEdges++;
}
public void removeEdge(int x,int y){
edges[x][y]=0;
NumEdges--;
}
public void insertNode(T item){
myList.add(item);
}
public void removeNode(T item){
helpRemoveEdges(item);
myList.remove(item);
}
- 深度优先遍历
1.访问初始结点v,并标记结点v为已访问。
2.查找结点v的第一个邻接结点w。
3.若w存在,则继续执行4,否则算法结束。
4.若w未被访问,对w进行深度优先遍历递归(即把w当做另一个v,然后进行步骤123)。
5.查找结点v的w邻接结点的下一个邻接结点,转到步骤3
王彪-20162321《程序设计与数据结构2nd》-第十一周学习总结与实验报告的更多相关文章
- 20172306 2018-2019-2 《Java程序设计与数据结构》第八周学习总结
20172306 2018-2019-2 <Java程序设计与数据结构>第八周学习总结 教材学习内容总结 堆 堆是具有两个附加属性的一棵二叉树 它是一个完全树 对每一结点,它小于或等于其左 ...
- 20172306 2018-2019-2 《Java程序设计与数据结构》第七周学习总结
20172306 2018-2019-2 <Java程序设计与数据结构>第七周学习总结 教材学习内容总结 概述 二叉查找树是一种含有附加属性的二叉树,即其左孩子小于父结点,而父结点又小于或 ...
- 20172306 2018-2019-2 《Java程序设计与数据结构》第六周学习总结
20172306 2018-2019-2 <Java程序设计与数据结构>第六周学习总结 教材学习内容总结 概述(了解一下树的一些概念) 树是一种非线性结构.树由一个包含结点和边的集构成,其 ...
- 20lanmo162326 2017-2018-1 《程序设计与数据结构》第1周学习总结
20162326 2017-2018-1 <程序设计与数据结构>第1周学习总结 教材学习内容总结 算法:在特定计算模型下,解决问题的指令序列 计算 = 信息处理 也就是用工具,遵规则,机械 ...
- “2017面向对象程序设计(Java)第十一周学习总结”存在问题的反馈及教学安排
“2017面向对象程序设计(Java)第十一周学习总结”存在问题的反馈及教学安排1.“提出表扬的同学:姜依萍,王雪玲,徐楠,相文君,赵晓未提交作业的同学:任红强,王瑞强,宗鹏新,扎西才让,布旦刀杰,范 ...
- 201871010106-丁宣元 《面向对象程序设计(java)》第十一周学习总结
201871010106-丁宣元 <面向对象程序设计(java)>第十一周学习总结 正文开头: 项目 内容 这个作业属于哪个课程 https://home.cnblogs.com/u/nw ...
- 2017-2018-2 1723《程序设计与数据结构》第十一周作业 & 实验三 & (总体)第三周结对编程 总结
作业地址 第十一次作业:https://edu.cnblogs.com/campus/besti/CS-IMIS-1723/homework/1933 (作业界面已评分,可随时查看,如果对自己的评分有 ...
- 20172306《Java程序设计与数据结构》第十周学习总结
20172306<Java程序设计>第十周学习总结 教材学习内容总结 本章主要的讲的是集合有关的知识: 1.集合与数据结构 - 集合是一种对象,集合表示一个专用于保存元素的对象,并该对象还 ...
- 20172306《Java程序设计与数据结构》第八周学习总结
20172306<Java程序设计>第8周学习总结 教材学习内容总结 第十章最开始自己看的时候,没怎么看懂,等老师讲完之后,又看了一遍,就理解了很多.第十章主要学习了以下几点: 1.对于几 ...
随机推荐
- 20155303 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
20155303 <Java程序设计>实验一(Java开发环境的熟悉)实验报告 一.实验内容及步骤 (一)使用JDK编译.运行简单的java程序 命令行下的程序开发 步骤一(新建文件夹): ...
- Integer to Roman & Roman to Integer
Integer to Roman Given an integer, convert it to a roman numeral. The number is guaranteed to be wit ...
- MODULE_DEVICE_TABLE【转】
转自:http://blog.csdn.net/tangkegagalikaiwu/article/details/8444249 This pci_device_id structure needs ...
- 『实践』Java Web开发之分页(ajax)
1.需要用到的jar包.js文件 JSONArray().fromObject()需要的jar包: (1)commons-beanutils-1.8.3.jar (2)commons-collecti ...
- Nagios Openstack Plugin
Some simple example for checking Openstack services check nova service list #!/bin/sh export OS_PROJ ...
- 关于卫星RNSS与RDSS
名词解释:RNSS与RDSS 服务于用户位置确定的卫星无线电业务有两种.一种是卫星无线电导航业务,英文全称Radio Navigation Satellite System,缩写RNSS,由用户接收卫 ...
- MySQL缓存命中率概述及如何提高缓存命中率
MySQL缓存命中率概述 工作原理: 查询缓存的工作原理,基本上可以概括为: 缓存SELECT操作或预处理查询(注释:5.1.17开始支持)的结果集和SQL语句: 新的SELECT语句或预处理查询语句 ...
- cve-2010-3333 Microsoft Office Open XML文件格式转换器栈缓冲区溢出漏洞 分析
用的是泉哥的POC来调的这个漏洞 0x0 漏洞调试 Microsoft Office Open XML文件格式转换器栈缓冲区溢出漏洞 Microsoft Office 是微软发布的非常流行的办公 ...
- mysql索引(btree索引和hash索引的区别)
所有MySQL列类型可以被索引.根据存储引擎定义每个表的最大索引数和最大索引长度.所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节.大多数存储引擎有更高的限制. 索引的存储类型目前只有 ...
- 关于jedis2.4以上版本的连接池配置,及工具类
jedis.propertise 注意以前版本的maxAcitve和maxWait有所改变,JVM根据系统环境变量ServerType中的值 取不同的配置,实现多环境(测试环境.生产环境)集成. re ...