邻接矩阵实现

例图

分析

变量

  • 需要一个链表来保存数据-即保存结点
  • 需要一个二维数组来保存每个变得权值,有则填入具体数值,没有则用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》-第十一周学习总结与实验报告的更多相关文章

  1. 20172306 2018-2019-2 《Java程序设计与数据结构》第八周学习总结

    20172306 2018-2019-2 <Java程序设计与数据结构>第八周学习总结 教材学习内容总结 堆 堆是具有两个附加属性的一棵二叉树 它是一个完全树 对每一结点,它小于或等于其左 ...

  2. 20172306 2018-2019-2 《Java程序设计与数据结构》第七周学习总结

    20172306 2018-2019-2 <Java程序设计与数据结构>第七周学习总结 教材学习内容总结 概述 二叉查找树是一种含有附加属性的二叉树,即其左孩子小于父结点,而父结点又小于或 ...

  3. 20172306 2018-2019-2 《Java程序设计与数据结构》第六周学习总结

    20172306 2018-2019-2 <Java程序设计与数据结构>第六周学习总结 教材学习内容总结 概述(了解一下树的一些概念) 树是一种非线性结构.树由一个包含结点和边的集构成,其 ...

  4. 20lanmo162326 2017-2018-1 《程序设计与数据结构》第1周学习总结

    20162326 2017-2018-1 <程序设计与数据结构>第1周学习总结 教材学习内容总结 算法:在特定计算模型下,解决问题的指令序列 计算 = 信息处理 也就是用工具,遵规则,机械 ...

  5. “2017面向对象程序设计(Java)第十一周学习总结”存在问题的反馈及教学安排

    “2017面向对象程序设计(Java)第十一周学习总结”存在问题的反馈及教学安排1.“提出表扬的同学:姜依萍,王雪玲,徐楠,相文君,赵晓未提交作业的同学:任红强,王瑞强,宗鹏新,扎西才让,布旦刀杰,范 ...

  6. 201871010106-丁宣元 《面向对象程序设计(java)》第十一周学习总结

    201871010106-丁宣元 <面向对象程序设计(java)>第十一周学习总结 正文开头: 项目 内容 这个作业属于哪个课程 https://home.cnblogs.com/u/nw ...

  7. 2017-2018-2 1723《程序设计与数据结构》第十一周作业 & 实验三 & (总体)第三周结对编程 总结

    作业地址 第十一次作业:https://edu.cnblogs.com/campus/besti/CS-IMIS-1723/homework/1933 (作业界面已评分,可随时查看,如果对自己的评分有 ...

  8. 20172306《Java程序设计与数据结构》第十周学习总结

    20172306<Java程序设计>第十周学习总结 教材学习内容总结 本章主要的讲的是集合有关的知识: 1.集合与数据结构 - 集合是一种对象,集合表示一个专用于保存元素的对象,并该对象还 ...

  9. 20172306《Java程序设计与数据结构》第八周学习总结

    20172306<Java程序设计>第8周学习总结 教材学习内容总结 第十章最开始自己看的时候,没怎么看懂,等老师讲完之后,又看了一遍,就理解了很多.第十章主要学习了以下几点: 1.对于几 ...

随机推荐

  1. CSS 特殊性、继承与层叠

    一.特殊性规则 选择器的特殊性由选择器本身的组件确定:特殊性由四个部分组成,其初始值为0,0,0,0. 1.    对于选择器中的每一个id,记0,1,0,0: 2.    对于选择器中的每一个类.伪 ...

  2. Framebuffer 驱动学习总结(二)---- Framebuffer模块初始化

    ---恢复内容开始--- Framebuffer模块初始化过程:--driver\video\fbmem.c 1.  初始化Framebuffer: FrameBuffer驱动是以模块的形式注册到系统 ...

  3. python 之sqlite3库学习

    # -*- coding:utf-8 -*- # 导入SQLite驱动:>>> import sqlite3# 连接到SQLite数据库# 数据库文件是test.db# 如果文件不存 ...

  4. shell系统检测->

    系统状态检测脚本练习 1-> 查看磁盘状态 思路:查看磁盘/当前使用状态,如果使用率超过80%则报警发邮件 1.获取磁盘当前使用的值 df -h|grep /$ 2.从获取到的值中提取出,对应的 ...

  5. tf.metrics.accuracy ==>坑货

    tf.metrics.accuracy输出两个值,第一个值为上几步的平均精度,第二值是上几步与该步的精度的平均值. 正常的计算单个batch正确率的代码 self.correct_prediction ...

  6. eclipse导入/导出项目要注意三个地方

    这个三个地方的jdk必须保持一致,不报错

  7. (一)问候MyBatis3

    第一节:MyBatis简介 百度百科 第二季:Mybatis版HolleWorld实现 例子: mybatis-config.xml: <?xml version="1.0" ...

  8. SQL语句资料

    --语 句 功 能  --数据操作  SELECT --从数据库表中检索数据行和列  INSERT --向数据库表添加新数据行  DELETE --从数据库表中删除数据行  UPDATE --更新数据 ...

  9. TeamViewer的下载地址,低调低调

    https://github.com/cary-zhou/TeamViewer13-Crack

  10. oracle centos 静默安装

    http://blog.csdn.net/tongzidane/article/details/43852705 静默安装Oracle 11G过程中提示:Exception in thread &qu ...