一个图的带权邻接表存储结构的应用
情景:在一个图中,已知经过的一串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。
首先读取点和线要素,初始化邻接表,初始化走过的节点数组。

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
作者:太一吾鱼水
文章未经说明均属原创,学习笔记可能有大段的引用,一般会注明参考文献。
欢迎大家留言交流,转载请注明出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程