gpt4 book ai didi

c - 关于定义 : Rewriting Algorithm from Go Code to C

转载 作者:数据小太阳 更新时间:2023-10-29 03:33:54 26 4
gpt4 key购买 nike

目前正在将加权 DAG 转换为用 Go 语言编写并进行拓扑排序的 C 代码。实际上我错过了代码的一部分,即示例下面的函数。我不知道“访问”声明是什么。它是另一个函数中的函数声明吗?如果您使用 C 语法进行解释,那就太好了。

func (g *graph) topoSort() []int {
result := make([]int, g.size())
marks := make([]bool, g.size())
resultIndex := g.size() - 1

var visit func(int)
visit = func(u int) {
for _, item := range g.adjList[u] {
if !marks[item.vertex] {
visit(item.vertex)
}
}

marks[u] = true
result[resultIndex] = u
resultIndex--
}

for u := range g.adjList {
if !marks[u] {
visit(u)
}
}

return result
}

最佳答案

是的,它是一个局部函数定义,它closes over marks,不值得直接翻译。如果您还更改它以将 marks 作为参数,则可以将其转换为普通的静态函数。

关于c - 关于定义 : Rewriting Algorithm from Go Code to C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55962198/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com