首页 > 代码库 > 数据结构之图 Part2 - 3
数据结构之图 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; } }}简要说明,只是为了便于理解数据结构,没有刻意的去标准实现,见谅。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。