图像存储:系统设计、星码前向链C语言实例
1.
链前向星码的概念是基于前向星码的改进,是最高效的算法竞赛。与容易理解的邻接表和邻接矩阵不同,高级星型算法并不容易理解。
在了解顺行星之前,我们需要先知道什么是顺行星。前向星号是边缘特定的序列号。我们根据起始位置从小到大排列边数组中的每条边。如果起点相同,则按终点从小到大排序,并记录起点以及序列中从某一点开始的所有边的存储长度,则前向星完成。
前向链星的基础是利用链表的性质(一个节点指向另一个节点)来达到目的,无需像前向星形那样排序(平均排序需要 O(nlogn ) ,可以直接搜索目标,从而减少使用电脑的时间。? //显示边 int w;int ‼w;int ‼
下一个;}边缘[10005];intcnt=0; 头[10005]; //表示源的边数具体解释为:
a)edge表示边。这个结构会逐渐记录边缘的轮廓,它由三个元素组成
l w 权重,即边缘之间的权重。下图中为默认1,未显示。
l 表示第 i 个边所指向的节点。
l edge[i].next 表示第 i 条边。下一个边数
b)Cnt 表示边数。插入时每+1就用它
c)头部代表x节点需要被访问的边
另外,以我们这个系统的图为例,需要存储以下内容在链的前向星中:
![]()
(示例图,假设所有边权重都为1)
通过上图可以得到这样一个操作表(不是单独的)
| Edge[ 0].到 | 2 | 边缘[0].下一个 | -1 | 头部[1] | 0 | ||
| 边缘[1].到 | 3 | ].头部[1] | 1 | ||||
| 侧面[2].到 | 4 | 侧面[2].下一个 | -1 | 头[2] | 2 | ||
| 侧面[3] .到[3 .下一个 | 2 | 头[2] | 3 | ||||
| 边界[4].至 | 4 | 边界[4].下一个 | -1 | 头[3] ♶⓶ 边缘[5].下一个 | -1 | He广告[4] | 5 |
可以看到,比如我们访问所有与1相连的节点时,首先访问的是头部[1],头部的下标指的是节点1,内容指的是节点1的标签我们应该进入的边缘。现在我们得到数据1,这表明我们需要访问边1。现在,我们找到边[1],得到第一个to的内容,表示节点1与节点3相连。然后,访问如果我们询问next的内容,我们在edge[1].next中得到了下一条边的token 0,所以我们输入content[0],得到了新的信息,edge[0].to=2,也就是说1节点和节点2相连,当下一个输入的内容为-1时,表示没有下一个元素,下游输入结束。至此,我们就收到了与 1
连接的所有节点的信息,因此可以得到如下信息表:
| Node 1 | -1 | 2 | 3 |
| Node 2 | 1 | 4 | 5 |
| Node 3 -1 | 4 | ||
| Node 4 | -1 | 5 | |
| Node 5 | -1 |
向另一侧添加信息时使用以下代码
void |
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网