当前位置: 首页 > news >正文

算法-数据结构-图-邻接表构建

邻接表的基本概念

  1. 顶点(Vertex)

    • 图中的每个顶点用一个节点表示。

    • 每个顶点存储一个链表或数组,用于记录与该顶点直接相连的其他顶点。

  2. 边(Edge)

    • 如果顶点 A 和顶点 B 之间有一条边,那么在 A 的邻接表中会记录 B,同时在 B 的邻接表中也会记录 A(如果是无向图)。

  3. 存储方式

    • 邻接表可以用多种方式实现,比如:

      • 链表:每个顶点对应一个链表,链表中存储与该顶点相连的其他顶点。

      • 动态数组:每个顶点对应一个动态数组(如 ArrayList),数组中存储与该顶点相连的其他顶点。

      • 哈希表:每个顶点对应一个哈希表,键是相邻顶点,值可以是边的权重(适用于带权图)。

  4. 代码实现

顶点定义

public class Node {//节点位置int data;//下一个节点Node nextNode;//节点默认空值Node() {};//节点变量Node(int val){data=val;}//节点初始化Node(int val,Node node){data=val;nextNode=node;}
}

邻接表创建与打印

import java.util.ArrayList;
import java.util.List;public class GraphTest {//创建领接表//顶点 A B C D E F//边 AB AC BD DF EFpublic static void creatGraph(){//创建顶点List<Character> vList=new ArrayList<>();for(int i=0;i<6;i++){vList.add((char)('A'+i));}//创建空列表存储空节点,表示相互领接关系List<Node> vNodeList=new ArrayList<>();for(int i=0;i<vList.size();i++){vNodeList.add(null);}//插入领接关系//A->B 0-1insert(0,1,vNodeList);//A->C 0-2insert(0,2,vNodeList);//B->D 1-3insert(1,3,vNodeList);//D->F 3-5insert(3,5,vNodeList);//E->F 4-5insert(4,5,vNodeList);//领接表打印for(int i=0;i<vNodeList.size();i++){System.out.print(vList.get(i));System.out.print("-->");Node curNode=vNodeList.get(i);while (curNode!=null){System.out.print(vList.get(curNode.data));System.out.print(" ");System.out.print(curNode.data);System.out.print(" ");curNode=curNode.nextNode;}System.out.println();}}//头插入法插入相互领接数据//v1为顶点位置,v2为相互领接顶点的位置public static void insert(int v1,int v2,List<Node> list){//创建一个节点Node newNode=new Node(v2);//新的节点指向列表里的节点newNode.nextNode=list.get(v1);//存储当前节点在列表里list.set(v1,newNode);}public static void main(String[] args) {creatGraph();}
}

相关文章:

算法-数据结构-图-邻接表构建

邻接表的基本概念 顶点&#xff08;Vertex&#xff09;&#xff1a; 图中的每个顶点用一个节点表示。 每个顶点存储一个链表或数组&#xff0c;用于记录与该顶点直接相连的其他顶点。 边&#xff08;Edge&#xff09;&#xff1a; 如果顶点 A 和顶点 B 之间有一条边&#xf…...

Docker(Nginx)部署Vue

简介&#xff1a;目标使用docker将vue生成的dist文件&#xff0c;结合nginx生成镜像&#xff0c;然后运行&#xff1b; 1、首选确保vue项目正确运行&#xff0c;并能正确打包dist文件&#xff1b; 2、查看已经生成的dist文件 3、将dist文件打包为rar文件或者zip文件&#xf…...

ubuntu22.04的docker容器中安装ssh服务

ubuntu22.04的docker容器中安装ssh服务&#xff0c;以便外部可以连接到容器中操作。 rootnode15:~# cat /etc/issue Ubuntu 22.04.5 LTS \n \l rootnode15:~# docker ps|grep qwen 7d3c36c37d36 vllm/vllm-openai:v0.7.3 "python3 -m …...

卷积这个词在卷积神经网络中应该怎么理解

卷积的定义 数学概念&#xff1a; 在数学上&#xff0c;卷积是一种操作&#xff0c;通常用于两个函数之间的运算。对于图像处理而言&#xff0c;这些函数通常是输入图像和一个称为“卷积核”或“滤波器”的小矩阵。 在CNN中的应用&#xff1a; 卷积操作是通过滑动窗口&#xf…...

设计模式教程:迭代器模式(Iterator Pattern)

迭代器模式&#xff08;Iterator Pattern&#xff09;是设计模式中的一种行为型模式&#xff0c;它允许顺序访问一个集合对象中的元素&#xff0c;而无需暴露集合对象的内部结构。换句话说&#xff0c;迭代器模式提供了一个方法&#xff0c;能让你遍历集合中的元素&#xff0c;…...

C语言学习【1】C语言关于寄存器的封装

目录 1.封装寄存的C语言的语法volatile&#xff1a;unsigned int:*pGpiobOdrvolatile unsigned int * 2.进一步C语言的封装 在嵌入式中&#xff0c;底层一定是操作寄存器&#xff0c;我有一个理念&#xff0c;凡事一定要想清楚&#xff0c;把任何知识点融入自己的理解之中&…...

鸿蒙app 开发中的 == 和 === 的区别

在鸿蒙 App 开发中&#xff0c;如果你使用 JavaScript 或 TypeScript 进行编码&#xff0c; 和 是用于比较值的运算符&#xff0c;它们的主要区别在于比较的严格程度&#xff0c;下面为你详细介绍&#xff1a; 1. &#xff08;宽松相等运算符&#xff09; 比较规则&#xff1…...

【算法】冒泡排序

目录 一、算法概述 二、算法原理 1. 核心思想 2. 排序过程演示 三、标准实现代码 四、时间复杂度分析 五、优化策略 1. 提前终止优化 2. 记录最后交换位置 六、算法特性 七、实际应用 八、扩展思考 九、总结 一、算法概述 冒泡排序&#xff08;Bubble Sort&#xff0…...

R Excel 文件:高效数据处理的利器

R Excel 文件:高效数据处理的利器 在数据分析领域,R语言因其强大的统计分析和可视化功能而备受推崇。而R Excel文件,作为R语言与Excel的桥梁,使得数据在R和Excel之间的高效转换成为可能。本文将详细介绍R Excel文件的概念、应用场景以及操作方法。 一、R Excel文件的概念…...

数据库(MySQL):使用命令从零开始在Navicat创建一个数据库及其数据表(一).创建基础表

一. 使用工具和命令 1.1 使用的工具 Navicat Premium 17 &#xff1a;“Navicat”是一套可创建多个连接的数据库管理工具。 MySQL版本8.0.39 。 1.2 使用的命令 Navicat中使用的命令 命令 命令解释 SHOW DATABASES&#xff1b; 展示所有的数据库 CREATE DATABASE 数据…...

电力通信物联网应用,国密网关守护电力数据安全

电力国密网关是用于保护电力调度数据网路由器和电力系统的局域网之间通信安全的电力专用网关机&#xff0c;主要为上下级控制系统之间的广域网通信提供认证与加密服务&#xff0c;实现数据传输的机密性、完整性。 国密算法网关功能特点 身份认证&#xff1a;对接入的设备和用户…...

vue:vite 代理服务器 proxy 配置

Vite 代理服务器&#xff08;Proxy&#xff09;的配置通常用于开发环境&#xff0c;以解决跨域请求等问题。以下是一个详细的配置步骤&#xff1a; 通过以上步骤&#xff0c;你就可以在 Vite 项目中配置代理服务器&#xff0c;以便在开发过程中方便地访问后端服务。 ‌找到 Vi…...

Java【网络原理】(2)初识网络续与网络编程

目录 1.前言 2.正文 2.1TCP协议与UDP协议 2.2socket API进行网络编程 2.2.1DatagramPacket类 2.2.1.1发送数据报 2.2.1.2接收数据报 2.2.1.3获取数据报内容 2.2.1.4设置数据报内容 2.2.2DatagramSocket类 2.2.2.1构造方法 2.2.2.2常用方法 2.2.3具体代码与解释 3…...

AI+集装箱号码识别技术,主要发展方向和应用潜力

集装箱号码识别技术作为物流数字化的重要工具&#xff0c;其应用前景随着全球供应链的智能化升级和绿色转型需求不断扩大。结合当前技术发展和行业实践&#xff0c;以下是其未来的主要发展方向和应用潜力&#xff1a; 1.物流与港口智能化管理 自动化识别与效率提升&#xff1…...

安装可视化jar包部署平台JarManage

一、下载 下载地址&#xff1a;JarManage 发行版 - Gitee.com &#x1f692; 下载 最新发行版 下载zip的里面linux和windows版本都有 二、运行 上传到服务器&#xff0c;解压进入目录 &#x1f69a; 执行java -jar jarmanage-depoly.jar 命令运行 java -jar jarmanage-dep…...

后端之JPA(EntityGraph+JsonView)

不同表之间的级联操作或者说关联查询是很多业务场景都会用到的。 对于这种需求最朴素的方法自然是手动写关联表&#xff0c;然后对被关联的表也是手动插入数据。但是手写容易最后写成一堆shit代码&#xff0c;而且修改起来也是非常麻烦的。 学会使用现成的工具还是非常有利的…...

Java数据结构第十三期:走进二叉树的奇妙世界(二)

专栏&#xff1a;数据结构(Java版) 个人主页&#xff1a;手握风云 目录 一、二叉树的遍历 1.1. 前序遍历 1.2. 中序遍历 1.3. 后序遍历 1.4. 完整代码 二、二叉树的基本操作 2.1. 获取树中结点个数 2.1. 获取叶子结点个数 2.3. 获取第k层结点的个数 2.4. 获取二叉树的…...

JavaScript系列(86)--现代构建工具详解

JavaScript 现代构建工具详解 &#x1f528; 现代前端开发离不开构建工具&#xff0c;它们帮助我们处理模块打包、代码转换、资源优化等任务。让我们深入了解主流的构建工具及其应用。 构建工具概述 &#x1f31f; &#x1f4a1; 小知识&#xff1a;构建工具主要解决代码转换…...

docker容器网络配置及常用操作

Linux内核实现名称空间的创建 ip netns&#xff08;网络名称空间&#xff09;命令 可以借助ip netns命令来完成对 Network Namespace 的各种操作。ip netns命令来自于iproute安装包&#xff0c;一般系统会默认安装&#xff0c;如果没有的话&#xff0c;请自行安装。 注意&am…...

Docker 性能优化指南

Docker 提供了强大的容器化功能&#xff0c;能够帮助开发者在不同的环境中构建、测试和部署应用。然而&#xff0c;随着容器化应用的不断增长&#xff0c;Docker 容器可能会面临一些性能瓶颈&#xff0c;影响其运行效率、资源占用和扩展能力。为了确保容器在生产环境中的高效运…...

SITS2026案例深度拆解:为什么同一Prompt在Kubernetes集群A生成合规代码,在集群B触发安全熔断?(附YAML级差异比对表)

第一章&#xff1a;SITS2026案例&#xff1a;AI云原生代码生成 2026奇点智能技术大会(https://ml-summit.org) SITS2026&#xff08;Smart Intelligent Transformation Suite 2026&#xff09;是面向金融核心系统的云原生AI工程实践平台&#xff0c;其核心能力之一是基于多模…...

光轮智能揽5.5亿订单引爆具身数据元年,物理AI时代数据成竞争焦点

1. 光轮智能订单刷新纪录&#xff0c;引爆“具身数据元年” 全球首个具身数据独角兽光轮智能&#xff0c;2026年一季度狂揽5.5亿元订单&#xff0c;刷新具身数据行业纪录&#xff0c;直接引爆“具身数据元年”。把订单拆开来看&#xff0c;背后浮现出的并非单一需求&#xff0c…...

TI毫米波雷达选型指南:IWR6843 vs IWR1843性能对比与实战场景解析

TI毫米波雷达选型指南&#xff1a;IWR6843 vs IWR1843性能对比与实战场景解析 毫米波雷达技术正在重塑工业检测、智能交通和自动化控制领域的感知能力。作为该领域的核心器件&#xff0c;德州仪器&#xff08;TI&#xff09;的IWR系列毫米波雷达凭借其高集成度和卓越性能&…...

5步掌握FanControl:Windows智能风扇控制终极指南

5步掌握FanControl&#xff1a;Windows智能风扇控制终极指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/FanC…...

别再死记硬背了!用‘阅览室占座’和‘独木桥过河’两个生活例子,彻底搞懂操作系统的P、V操作

从生活场景秒懂操作系统&#xff1a;用阅览室和独木桥破解P、V操作 记得大学时第一次在图书馆抢座&#xff0c;好不容易找到空位却发现桌上放着"已占"的纸条——这种资源争夺的混乱场景&#xff0c;恰如操作系统中的进程竞争。而管理员后来推出的座位登记系统&#x…...

GDSDecomp深度解析:Godot引擎逆向工程的技术架构与最佳实践

GDSDecomp深度解析&#xff1a;Godot引擎逆向工程的技术架构与最佳实践 【免费下载链接】gdsdecomp Godot reverse engineering tools 项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp 在游戏开发领域&#xff0c;Godot引擎以其开源特性和强大的2D/3D渲染能…...

3种革命性方案:让Android应用在Windows上原生运行

3种革命性方案&#xff1a;让Android应用在Windows上原生运行 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾在Windows电脑上想要运行某个Android应用&#x…...

Go-CQHTTP终极指南:一站式构建智能QQ机器人助手

Go-CQHTTP终极指南&#xff1a;一站式构建智能QQ机器人助手 【免费下载链接】go-cqhttp cqhttp的golang实现&#xff0c;轻量、原生跨平台. 项目地址: https://gitcode.com/gh_mirrors/go/go-cqhttp 在当今数字化时代&#xff0c;智能聊天机器人已成为社群管理、自动化客…...

给单片机项目选蓝牙模块?别只看HC-05,这份避坑指南帮你省下几百块

给单片机项目选蓝牙模块&#xff1f;别只看HC-05&#xff0c;这份避坑指南帮你省下几百块 在智能硬件开发中&#xff0c;蓝牙模块的选择往往成为项目成败的关键分水岭。许多开发者习惯性选择HC-05模块&#xff0c;却不知这个决定可能让项目陷入供电兼容性、iOS连接限制或功耗超…...

从卫星照片到 actionable 信息:手把手拆解遥感图像解译的全流程与实战技巧

从卫星照片到可执行信息&#xff1a;遥感图像解译全流程实战指南 当一张卫星影像呈现在你面前时&#xff0c;那些五彩斑斓的像素背后隐藏着怎样的故事&#xff1f;如何从这些看似抽象的图案中提取出对城市规划、农业监测或灾害评估具有实际价值的信息&#xff1f;本文将带你走进…...