一个图的带权邻接表存储结构的应用

情景:在一个图中,已知经过的一串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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值