Code前端首页关于Code前端联系我们

图像存储:系统设计、星码前向链C语言实例

terry 2年前 (2023-09-27) 阅读数 74 #数据结构与算法

1.

链前向星码的概念是基于前向星码的改进,是最高效的算法竞赛。与容易理解的邻接表和邻接矩阵不同,高级星型算法并不容易理解。

在了解顺行星之前,我们需要先知道什么是顺行星。前向星号是边缘特定的序列号。我们根据起始位置从小到大排列边数组中的每条边。如果起点相同,则按终点从小到大排序,并记录起点以及序列中从某一点开始的所有边的存储长度,则前向星完成。

前向链星的基础是利用链表的性质(一个节点指向另一个节点)来达到目的,无需像前向星形那样排序(平均排序需要 O(nlogn ) ,可以直接搜索目标,从而减少使用电脑的时间。? //显示边 int w;int ‼w;int

23int 下一个;}边缘[10005];intcnt=0; 头[10005]; //表示源的边数

具体解释为:

a)edge表示边。这个结构会逐渐记录边缘的轮廓,它由三个元素组成

l w 权重,即边缘之间的权重。下图中为默认1,未显示。

l 表示第 i 个边所指向的节点。

l edge[i].next 表示第 i 条边。下一个边数

b)Cnt 表示边数。插入时每+1就用它

c)头部代表x节点需要被访问的边

另外,以我们这个系统的图为例,需要存储以下内容在链的前向星中:

图的存储:结构设计、链式向前星代码C语言示例

(示例图,假设所有边权重都为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].下一个-1He广告[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-123
Node 2145
Node 3 -1 4
Node 4-15
Node 5-1

向另一侧添加信息时使用以下代码

void
void ge(int intintint边缘[ cnt ].to = 到; 边[ cnt].w = w; side[cnt].next = 头[来自]; ;}

注意,我们需要分配给整个数组一个初始值为-1,即错误和错误检查都有帮助,因为-1是截止点-这个算法的思想。当然,这个边界点也可以设置为任何负数. 访问速度。它是图论算法的流行表述。这在竞争算法中尤其重要。它的缺陷也是显而易见且难以理解的。和施工问题。

链的作用是访问本节点会自动显示下一个节点的效果,所以适合构建遍历访问的算法代码,后面会介绍。

注意:鼓励初学者多次阅读本章。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门