zoukankan      html  css  js  c++  java
  • 一个图的带权邻接表存储结构的应用

    情景:在一个图中,已知经过的一串n节点信息,希望显示经过的路径。

    数据组织:

      点要素:存放图中的点信息,必含Id字段

      线要素:存放编辑好的路径信息,必含“Start”和“end”字段,存放无向图的起始终止节点Id,隐含线的FID

    实现语言:C#

    数据结构:图的邻接表存储结构AdjacencyList<T>

    1 public class AdjacencyList<T> //图的邻接表存储结构    
    2 public class Node<T> //表示链表中的表结点
    3 public class Vertex<T>//表示存放于数组中的表头结点

    这里在Node<T>类中增加了ArcId字段,用来存储线的FID。

    首先读取点和线要素,初始化邻接表,初始化走过的节点数组。

    View Code
     1  public IPolyline FindPolyLine(string _start, string _end)
     2         {
     3             Node<string> TargetNode=null;
     4             string strTargetLineId=string.Empty;
     5             Vertex<string> head= pathDisplay.Find(_start);
     6             if (head.firstEdge != null)
     7             {
     8                 
     9                 Node<string> tmp = head.firstEdge;
    10                 while (tmp != null)
    11                 {
    12                     if (_end==tmp.adjvex.data.ToString())
    13                     {
    14                         TargetNode=tmp;
    15                     }
    16                     
    17                     tmp = tmp.next;
    18                 }
    19                 strTargetLineId=TargetNode.arcId;
    20             }
    21             IPolyline poline = dic_Id_Polyline[strTargetLineId];
    22             return poline;
    23         }
    24         Dictionary<string, IPoint> dic_Id_Pt = new Dictionary<string, IPoint>();
    25         Dictionary<string, IPolyline> dic_Id_Polyline = new Dictionary<string, IPolyline>();
    26         AdjacencyList<string> pathDisplay = new AdjacencyList<string>();

    为了实现轨迹的动画显示,应用了Threading空间中的Timer,用委托实现在AxMapControl中的动画显示。

    参考文献:

    http://www.cnblogs.com/abatei/archive/2008/06/06/1215114.html

    文章未经说明均属原创,学习笔记可能有大段的引用,一般会注明参考文献。 欢迎大家留言交流,转载请注明出处。
  • 相关阅读:
    CentOS7.4安装Docker
    责任链模式
    策略模式
    状态模式
    解释器模式
    备忘录模式
    中介者模式
    观察者模式
    迭代器模式
    private、default、protected和public的作用域
  • 原文地址:https://www.cnblogs.com/yhlx125/p/2834155.html
Copyright © 2011-2022 走看看