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

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.lryc.cn/news/491233.html

相关文章:

  • 传输控制协议(TCP)和用户数据报协议(UDP)
  • 【Python爬虫】Scrapy框架实战---百度首页热榜新闻
  • 采用python3.12 +django5.1 结合 RabbitMQ 和发送邮件功能,实现一个简单的告警系统 前后端分离 vue-element
  • Qt 实现网络数据报文大小端数据的收发
  • [译]Elasticsearch Sequence ID实现思路及用途
  • Java基于SpringBoot+Vue的藏区特产销售平台
  • 12-表的约束
  • 【人工智能】深度学习入门:用TensorFlow实现多层感知器(MLP)模型
  • 【Go】-go中的锁机制
  • c ++零基础可视化——vector
  • Centos 7 安装 Docker 最新版本
  • 构建高效在线教育:SpringBoot课程管理系统
  • 二进制与网络安全的关系
  • 【计算机网络】网段划分
  • VB、VBS、VBA的区别及作用
  • 深度学习中的循环神经网络(RNN)与时间序列预测
  • Unity 设计模式-原型模式(Prototype Pattern)详解
  • 如何在 RK3568 Android 11 系统上排查以太网问题
  • 如何在WPF中嵌入其它程序
  • 大模型呼入系统是什么?
  • Flutter:SlideTransition位移动画,Interval动画延迟
  • 【Elasticsearch入门到落地】2、正向索引和倒排索引
  • 网络安全概论
  • 后端开发如何高效使用 Apifox?
  • 实现List接口的三类-ArrayList -Vector -LinkedList
  • LeetCode 904.水果成篮
  • GitHub 开源项目 Puter :云端互联操作系统
  • 美创科技入选2024数字政府解决方案提供商TOP100!
  • 七天掌握SQL--->第五天:数据库安全与权限管理
  • 数学建模学习(138):基于 Python 的 AdaBoost 分类模型