数据结构之图 Part2 - 3
十字链表
简单的说就是邻接表和逆邻接表的合体,解决了原邻接表或者逆邻接表出度和入度的计算无法兼得的问题。
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace LH.GraphConsole { public struct OrthogonalListGraph { public NodeItem[] VertexNodes; public OrthogonalListGraph(int size) { VertexNodes = new NodeItem[size]; } } public struct NodeItem { public List<OrthEdgeItem> InList; public List<OrthEdgeItem> OutList; public NodeItem(List<OrthEdgeItem> inList, List<OrthEdgeItem> outList) { InList = inList; OutList = outList; } } public class OrthEdgeItem { public int Weight; public string Name; public OrthEdgeItem(int weight, string name) { Weight = weight; Name = name; } } }
简单的主函数:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace LH.GraphConsole { class Program { static void Main(string[] args) { OrthogonalList(); } private static void OrthogonalList() { var size = 5; var orgthListGraph = new OrthogonalListGraph(size); var orgEdge03 = new OrthEdgeItem(1, "edge03"); var orgEdge10 = new OrthEdgeItem(1, "edge10"); var orgEdge12 = new OrthEdgeItem(1, "edge12"); var orgEdge21 = new OrthEdgeItem(1, "edge21"); var orgEdge20 = new OrthEdgeItem(1, "edge20"); var inList0 = new List<OrthEdgeItem>(); inList0.Add(orgEdge10); inList0.Add(orgEdge20); var outList0 = new List<OrthEdgeItem>(); outList0.Add(orgEdge03); var nodeItem0 = new NodeItem(inList0, outList0); var nodeItem1 = new NodeItem(); var nodeItem2 = new NodeItem(); var nodeItem3 = new NodeItem(); var nodeItem4 = new NodeItem(); orgthListGraph.VertexNodes[0] = nodeItem0; orgthListGraph.VertexNodes[1] = nodeItem1; orgthListGraph.VertexNodes[2] = nodeItem2; orgthListGraph.VertexNodes[3] = nodeItem3; orgthListGraph.VertexNodes[4] = nodeItem4; } } }
简要说明,只是为了便于理解数据结构,没有刻意的去标准实现,见谅。
数据结构之图 Part2 - 3的更多相关文章
- 数据结构之图 Part2 - 1
邻接矩阵 网上很少有C# 写图的数据结构的例子,实际的项目中也从来没用过Array 这坨东西,随手写个,勿喷. namespace LH.GraphConsole { public struct Gr ...
- 数据结构之图 Part2 - 2
邻接表 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ...
- python数据结构之图的实现
python数据结构之图的实现,官方有一篇文章介绍,http://www.python.org/doc/essays/graphs.html 下面简要的介绍下: 比如有这么一张图: A -> B ...
- hdu 1233:还是畅通工程(数据结构,图,最小生成树,普里姆(Prim)算法)
还是畅通工程 Time Limit : 4000/2000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submis ...
- 利用python+graphviz绘制数据结构关系图和指定目录下头文件包含关系图
作为一名linux系统下的C语言开发,日常工作中经常遇到两个问题: 一是分析代码过程中,各种数据结构互相关联,只通过代码很难理清系统中所有结构体的整体架构,影响代码消化的效率; 二是多层头文件嵌套包含 ...
- python数据结构之图的实现方法
python数据结构之图的实现方法 本文实例讲述了python数据结构之图的实现方法.分享给大家供大家参考.具体如下: 下面简要的介绍下: 比如有这么一张图: A -> B A ...
- python数据结构之图深度优先和广度优先实例详解
本文实例讲述了python数据结构之图深度优先和广度优先用法.分享给大家供大家参考.具体如下: 首先有一个概念:回溯 回溯法(探索与回溯法)是一种选优搜索法,按选优条件向前搜索,以达到目标.但当探索到 ...
- 数据结构之图 Part1
Part 1 预计使用7天的时间来过掉图相关的数据结构.第一天主要是一天图的基本概念,熟练掌握定义是一切交流和沟通的基础. 1定义 1.1图 有穷非空顶点,外加边. G(V,E) Graph Vert ...
- C++数据结构之图
图的实现是一件很麻烦的事情,很多同学可能在学数据结构时只是理解了图的基本操作和遍历原理,但并没有动手实践过.在此,我说说我的实现过程. 首先,在草稿纸上画一个图表,这里是有向图,无向图也一样,如下: ...
随机推荐
- PHP 知识点链接
PHP 1.PHP中的危险函数全解析 http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2009/0216/333 ...
- PowerDesigner V16.5 安装文件
之前在网上找个假的,只能看,不能创建自己的DB; 或者 不能破解的,比较伤脑筋. 偶在这里提供一个 可长期使用的版本. PowerDesigner165_破解文件.rar 链接:http://p ...
- 【云计算】qcow2虚拟磁盘映像转化为vmdk
Software QEMU emulator version 1.7.0 Introduction Since we use VmWare in my company, I started to pl ...
- Redis Sentinel机制与用法(一)
Sentinel spring 集群配置: 概述 Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕 ...
- FileUpload1上传控件
<asp:FileUpload ID="FileUpload1" runat="server" /> string fn = System.IO.P ...
- Robot Framework + Selenium2Library环境下,结合Selenium Grid实施分布式自动化测试
最近一段时间,公司在推行自动化测试流程,本人有幸参与了自定义通用控件的关键字封装和脚本辅助编写.数据驱动管理.测试用例执行管理等一系列工具软件的研发工作,积累了一些经验,在此与大家做一下分享,也算是做 ...
- Java多线程Socket在控制台输出的多人聊天室编程
服务器端代码 import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import java ...
- ACM/ICPC 之 Kruskal范例(ZOJ1203-POJ1861(ZOJ1542))
两道最小生成树范例,Kruskal解法-以边为主体扩展最小生成树,需要利用并查集. ZOJ1203-Swordfish 题意:求n个给定平面坐标的城市中的一条平面距离上的最短路长(保留两位小数) 题解 ...
- Java for LeetCode 221 Maximal Square
Given a 2D binary matrix filled with 0's and 1's, find the largest square containing all 1's and ret ...
- Vue 为什么在 HTML 中监听事件?
为什么在 HTML 中监听事件? 你可能注意到这种事件监听的方式违背了关注点分离(separation of concern)传统理念.不必担心,因为所有的 Vue.js 事件处理方法和表达式都严格绑 ...