堆栈[-1]在伪代码中的含义是什么?

时间:2016-01-27 10:08:17

标签: algorithm

def _all_simple_paths_graph(G, source, target, cutoff=None):
if cutoff < 1:
    return
visited = [source]
stack = [iter(G[source])]
while stack:
    children = stack[-1]
    child = next(children, None)
    if child is None:
        stack.pop()
        visited.pop()
    elif len(visited) < cutoff:
        if child == target:
            yield visited + [target]
        elif child not in visited:
            visited.append(child)
            stack.append(iter(G[child]))
    else: #len(visited) == cutoff:
        if child == target or target in children:
            yield visited + [target]
        stack.pop()
        visited.pop()

我在link上找到了该代码。

但是不理解一些陈述,如下所示

  • children = stack[-1] // stack[-1]是什么意思?

  • child = next(children, None) //儿童是一个名单还是儿童名单?

  • stack = [iter(G[source])] //那是什么iter

  • 如果孩子是无://猜猜孩子是否为空(孩子是一个列表)。

  • visited = [source] //这是什么?

  • yield visited + [target] //收益率?

任何人都可以向我解释一下吗?我试图用C语言重写它。

1 个答案:

答案 0 :(得分:3)

它看起来像一个python代码

<小时/> 1) stack[-1]表示它将提供最后一个元素。 2) children是一个变量,通过此代码保存列表的最后一个元素stack

children = stack[-1]

childnext()函数返回的任何内容,但从它的外观来看,它看起来也像一个变量。

<小时/> 4)     如果孩子是无: 如果next()函数返回None