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

转载于:https://www.cnblogs.com/yhlx125/archive/2012/12/26/2834155.html

一个图的带权邻接表存储结构的应用相关推荐

  1. 邻接矩阵和邻接表_[力扣743] 带权邻接表的单源最短路

    题目链接 743. 网络延迟时间 题目描述 有 N 个网络节点,标记为 1 到 N. 给定一个列表 times,表示信号经过有向边的传递时间. times[i] = (u, v, w),其中 u 是源 ...

  2. dijkstra邻接表_[力扣743] 带权邻接表的单源最短路

    题目链接 743. 网络延迟时间 题目描述 有 N 个网络节点,标记为 1 到 N. 给定一个列表 times,表示信号经过有向边的传递时间. times[i] = (u, v, w),其中 u 是源 ...

  3. 实现图的邻接矩阵和邻接表存储

    /** *    实验题目: *        实现图的邻接矩阵和邻接表存储 *    实验目的: *        领会图的两种主要存储结构和图基本运算算法设计 *    实验内容: *       ...

  4. 邻接表1试在邻接表存储结构上实现图的基本操作 insert_vertex 和 insert_arc,相关定义如下:icoding---算法改进--配详细注释

    邻接表1 试在邻接表存储结构上实现图的基本操作 insert_vertex 和 insert_arc,相关定义如下: typedef int VertexType; typedef enum{DG, ...

  5. 采用邻接表存储结构,编写一个判别无向图中任意给定的两个顶点之间是否存在一条长度为k的简单路径的算法。

    以邻接表存储的有向图中是否存在有顶点Vi到Vj顶点的路径(i!=j). 问题描述:试基于图的深度优先搜索策略编写一程序,判别以邻接表存储的有向图中是否存在有顶点Vi到Vj顶点的路径(i!=j). 输入 ...

  6. 邻接表2 -试在邻接表存储结构上实现图的基本操作 del_vertex-数据结构-图-icoding

    邻接表2 试在邻接表存储结构上实现图的基本操作 del_vertex,相关定义如下: typedef int VertexType;typedef enum{DG, UDG }GraphType;ty ...

  7. 邻接表1 - 试在邻接表存储结构上实现图的基本操作 insert_vertex 和 insert_arc-数据结构-图-icoding

    邻接表1 试在邻接表存储结构上实现图的基本操作 insert_vertex 和 insert_arc,相关定义如下: typedef int VertexType;typedef enum{DG, U ...

  8. mysql 邻接表_图的邻接表存储结构详解

    通常,图更多的是采用链表存储,具体的存储方法有 3 种,分别是邻接表.邻接多重表和十字链表. 本节先讲解图的邻接表存储法.邻接表既适用于存储无向图,也适用于存储有向图. 在具体讲解邻接表存储图的实现方 ...

  9. 数据结构图的邻接表存储结构

    图的邻接表存储 我们知道,数据之间的关系有 3 种,分别是 "一对一"."一对多" 和 "多对多",前两种关系的数据可分别用线性表和树结构存 ...

最新文章

  1. 37、JAVA_WEB开发基础之上传功能
  2. springboot mybatis-plus 配置 yml 、druid 配置 yml 、mybatis-plus 代码生成
  3. JavaScript中的纯函数是什么?
  4. mysql8.0.16安装_mysql8.0.16安装(补) September 24,2019
  5. Windows内核API HOOK 之 Inline Hook
  6. LR 监控mysql
  7. 如何恢复出厂设置并还原Apple Silicon M1 Mac?
  8. 服务器密闭通道天窗维修,机柜及密闭通道技术规范
  9. 第五章:腾讯云有哪些产品
  10. 英国政府收购SpaceX竞争对手背后,蕴藏着多大的野心?
  11. 自动升级程序连接不了服务器就,windows2012部署wsus更新服务器和使用设置
  12. 人工智能如何改变了我们的日常生活?
  13. IO流原理及流的分类
  14. Java学习资源 | Java编程最新教学视频大全,推荐
  15. gap,margin和padding的区别
  16. Gram矩阵的一些性质
  17. Golang字符串函数用法
  18. 车企反向造手机,两个生态的裂痕能否弥合?
  19. 云服务器部署stable diffusion webui
  20. 替换window.showModalDialog 已解决!!!

热门文章

  1. 土地利用覆被变化的概念_【能源+气候】生物质能碳捕集与封存技术在气候变化下的减排潜力...
  2. 打开VM虚拟机,遇见问题“无法连接MKS:套接字连接次数太多;正在放弃。”
  3. STM32(一)----建立嵌入式STM32工程
  4. 数据库(2)数据库介绍
  5. 无法获得 VMCI 驱动程序的版本: 句柄无效。 驱动程序“vmci.sys”的版本不正确。请尝试重新安装 VMware Workstation。 开启模块 DevicePowerOn 的操作失败
  6. ntp linux 使用,linux-ntp 使用
  7. dev shm php,/dev/shm 介绍 --转载
  8. magento如何如何找到对应html文件_Servlet如何配置xml
  9. map函数作用c语言,C语言 · C++中map的用法详解
  10. SQL ORDER BY 子句