C# 数据结构之【图】C#图

1. 图的概念

图是一种重要的数据结构,用于表示节点(顶点)之间的关系。图由一组顶点和连接这些顶点的边组成。图可以是有向的(边有方向)或无向的(边没有方向),可以是加权的(边有权重)也可以是无权的。

  • 顶点(Vertex):图中的基本单位,代表对象。
  • 边(Edge):连接顶点的线,可以是有向边或无向边。
  • 加权图(Weighted Graph):边上有权重(表示成本、距离等)。
  • 无向图(Undirected Graph):边没有方向,表示双向关系。
  • 有向图(Directed Graph):边有方向,表示单向关系。

2. 创建图的节点模型

class GraphNode
{public int Data { get; set; }public List<GraphNode> Neighbors { get; set; }public GraphNode(int data){Data = data;Neighbors = new List<GraphNode>();}
}

3. 使用及遍历

using System;namespace DataStructure
{class Program{static async Task Main(string[] args){// 创建图的节点GraphNode node1 = new GraphNode(1);GraphNode node2 = new GraphNode(2);GraphNode node3 = new GraphNode(3);// 添加节点之间的边(无向图,所以相互添加)node1.Neighbors.Add(node2);node2.Neighbors.Add(node1);node2.Neighbors.Add(node3);node3.Neighbors.Add(node2);// 广度优先搜索遍历图并输出节点值Console.WriteLine("广度优先搜索遍历图:");BFS(node1);}static void BFS(GraphNode startNode){Queue<GraphNode> queue = new Queue<GraphNode>();HashSet<GraphNode> visited = new HashSet<GraphNode>();queue.Enqueue(startNode);visited.Add(startNode);while (queue.Count > 0){GraphNode currentNode = queue.Dequeue();Console.Write(currentNode.Data + " ");foreach (GraphNode neighbor in currentNode.Neighbors){if (!visited.Contains(neighbor)){queue.Enqueue(neighbor);visited.Add(neighbor);}}}}}
}

运行结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/61452.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flink入门介绍

《 Flink 入门介绍》 一、前言 在当今大数据领域&#xff0c;流式计算扮演着至关重要的角色。它与传统的批量计算有着明显的区别&#xff0c;并在众多场景中展现出独特的优势。 &#xff08;一&#xff09;数据的时效性 在日常工作中&#xff0c;数据处理方式多样。若处理年…

短剧系统小程序开发产品设计实例解析

短剧系统小程序开发架构深度解析引言 随着数字娱乐市场的蓬勃发展&#xff0c;短剧因其紧凑的情节、创新的表现形式和便捷的观看体验&#xff0c;迅速吸引了大量观众的关注。作为承载短剧内容的重要平台&#xff0c;短剧系统小程序不仅需要在用户体验、内容管理等方面做到极致&…

AI数字人视频小程序:引领未来互动新潮流

当下&#xff0c;随着人工智能技术的不断创新发展&#xff0c;各类AI系统已经成为了创新市场发展的重要力量&#xff0c;AI文案、AI数字人、AI视频等&#xff0c;为大众带来更加便捷的创作方式&#xff0c;AI成为了一个全新的风口&#xff0c;各种AI红利持续释放&#xff0c;市…

《光谱学与光谱分析》

《光谱学与光谱分析》(Spectroscopy and Spectral Analysis)系中国科学技术协会主管&#xff0c;中国光学学会主办&#xff0c;由钢铁研究总院、中国科学院物理研究所、北京大学、清华大学联合承办的学术性刊物。刊登主要内容&#xff1a;激光光谱测量、红外、拉曼、紫外、可见…

解决vue-pdf的签章不显示问题

在使用vue-pdf 4.3.0时发现上传一般的普通pdf正常预览&#xff0c;但是上传带有红头文件的和和特殊字体的pdf无法正常内容显示&#xff0c;文字丢失问题。 1、查看控制台报错信息 2、缺少字体原因 getNumPages(url) {var loadingTask pdf.createLoadingTask({url: url,//引入…

【 模型】 开源图像模型Stable Diffusion入门手册

开源图像模型Stable Diffusion入门手册 引言硬件要求环境部署手动部署整合包 模型装配更新显存优化插件配置文生图最简流程提示词使用技巧结语 引言 Stable Diffusion是一款在2022年发布的深度学习文字到图像生成模型。它能够根据文字描述生成详细的图像&#xff0c;并且在几秒…

跨境电商API接口:数据采集与业务集成的核心

跨境电商作为全球贸易的重要组成部分&#xff0c;正随着互联网技术的发展而迅速增长。在这个过程中&#xff0c;API接口扮演了至关重要的角色&#xff0c;它们不仅提高了运营效率&#xff0c;还增强了安全性和用户体验。本文将深入探讨跨境电商API接口的应用、重要性以及面临的…

【linux013】文件操作命令篇 - less 命令

文章目录 less 命令1、基本用法2、常见选项3、交互式键盘命令4、举例5、注意事项 less 命令 less 是 Linux 中强大的文件分页查看命令&#xff0c;比 more 更灵活且功能更强大。less 支持双向滚动、搜索、显示大文件等功能&#xff0c;适用于查看文件内容或管道输出的大量文本…

力扣 无重复字符的最长字串-3

无重复字符的最长字串-3 class Solution { public:// 解决方法&#xff1a;双指针int lengthOfLongestSubstring(string s) { // 如果字符串为空&#xff0c;直接返回0if (s.length() 0)return 0;// 如果字符串不为空&#xff0c;字符串每个字符都不同的情况下&#xff0c;最…

如何在Ubuntu当中利用CloudCompare软件进行点云配准拼接?

1.首先需要安装相应的cloudcompare软件&#xff0c;以下有两种方式&#xff1a;第一种直接在ubuntu的软件商店里搜索CloudCompare软件进行install&#xff0c;我这里已经安装完毕。 方式二&#xff1a;可以直接原码安装&#xff1a; github地址&#xff1a; https://github.co…

贴贴,一款windows剪切板管理软件

贴贴&#xff0c;一款windows剪切板管理软件 软件下载官网 https://tietieapp.com 软件界面 软件界面简洁、信息展示清晰。软件会自动记录你复制过的内容。包括哪个软件复制的、复制的时间。支持图片、文本、文件等多种格式。支持持久化&#xff0c;电脑重启记录仍然存在。支持…

泷羽sec学习打卡-html基础

声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 关于云技术基础的那些事儿-捕获帅照 html基础什么是html&#xff1f; 常用的html标签html示例 css基础什…

RocketMQ的使⽤

初识MQ 1.1.同步和异步通讯 微服务间通讯有同步和异步两种⽅式&#xff1a; 同步通讯&#xff1a;就像打电话&#xff0c;需要实时响应。 异步通讯&#xff1a;就像发邮件&#xff0c;不需要⻢上回复。 两种⽅式各有优劣&#xff0c;打电话可以⽴即得到响应&#xff0c;但…

java 字符 ASCII码 详解

在 Java 中&#xff0c;字符 (char) 和 ASCII 码的关系是通过 Unicode 字符集建立的。以下是 Java 中字符与 ASCII 码相关的详解。 1. 什么是 ASCII 和 Unicode&#xff1f; ASCII (American Standard Code for Information Interchange) ASCII 码 是一种字符编码标准&#x…

初试无监督学习 - K均值聚类算法

文章目录 1. K均值聚类算法概述2. k均值聚类算法演示2.1 准备工作2.2 生成聚类用的样本数据集2.3 初始化KMeans模型对象&#xff0c;并指定类别数量2.4 用样本数据训练模型2.5 用训练好的模型生成预测结果2.6 输出预测结果2.7 可视化预测结果 3. 实战小结 1. K均值聚类算法概述…

JSON,事件绑定

文章目录 JSON事件绑定输入框input和div的内容返回获取dom元素数组还是单个对象for循环为什么要写const那一行&#xff0c;直接写 hobbys[index].checked true;可以吗const不是常量吗&#xff0c;为什么用const声明的element的属性值可以改变&#xff1f; 黑马学习笔记 JSON 定…

学习HTML第三十一天

学习文章目录 七. 普通按钮八. 文本域九.下拉框 七. 普通按钮 注意点&#xff1a;普通按钮的 type 值为 button &#xff0c;若不写 type 值是 submit 会引起表单的提交 八. 文本域 常用属性如下&#xff1a; rows 属性&#xff1a;指定默认显示的行数&#xff0c;会影响文…

基于Multisim的汽车尾灯控制电路设计与仿真

1、电路由四个按键控制&#xff0c;分别对应左转、右转、刹车和检查。 2、当左转或右转键按下时,左侧或右侧的 3个汽车尾灯按照左循环或右循环的顺!2/3 点亮&#xff0c;点亮时间为 1秒。 3、当刹车时&#xff0c;所有的尾灯同时闪烁&#xff0c;闪烁时间为1秒。 4、当检查时…

7天掌握SQL - 第三天:MySQL实践与索引优化

目录 安装MySQL创建数据库和表结构SQL语句实操练习MySQL高级特性索引设计与优化总结 1. 安装MySQL 1.1 下载与安装 MySQL可以通过官方网站下载安装包。以下是安装MySQL的基本步骤&#xff1a; 访问MySQL官方网站 MySQL Downloads。选择适合您操作系统的版本进行下载。安装…

osg、osgearth简介及学习环境准备

一、osg简介&#xff08;三维场景图渲染与调度引擎&#xff09; OSG是Open Scene Graphic 的缩写&#xff0c;OSG于1997年诞生于以为滑翔机爱好者之手&#xff0c;Don burns 为了对滑翔机的飞行进行模拟&#xff0c;对openGL的库进行了封装&#xff0c;osg的雏形就这样诞生了&…