簡體   English   中英

"我寫了一個拓撲排序算法,它沒有返回輸出"

[英]I wrote a topological sort alg and it's not returning an output

我認為我的拓撲排序算法是正確的,但也許我的節點類不起作用。 這是我的節點類和創建圖表的主要函數。 當我運行它時,我沒有得到任何輸出。 我認為這是我的類或我的圖表的構造出錯了,因為 topSort() 返回一個列表,所以如果它運行不正確,那么我會期望一個空列表或一個拓撲排序錯誤的列表。 這使我相信問題出在我的構造中。

class Node: 
    def __init__(self, val = 0, neighbors = None) -> None:
        self.val = val
        self.neighbors = neighbors
    def replaceNeighbors(self, neighbors):
        self.neighbors = neighbors

def dfs(vertex, stack, visited):
    #code

def topSort(graph):
    #code

def main():
    node1 = Node(1)
    node2 = Node(2)
    node3 = Node(3)
    node4 = Node(4)
    node1.replaceNeighbors([node2, node3])
    node2.replaceNeighbors([node4])
    node4.replaceNeighbors([node3])
    root = Node(0, [node1, node2])
    graph = [root, node1, node2, node3, node4]
    order = topSort(graph)
    print(order)

您的代碼沒有返回值的原因是因為您沒有調用 main() 方法。 您應該使用以下策略來完成此操作。 此外,返回您聲明但尚未定義的方法的更好技術是使用pass

class Node:
    def __init__(self, val, neighbors=None) -> None:
        self.val = val
        self.neighbors = neighbors

    def replaceNeighbors(self, neighbors):
        self.neighbors = neighbors


def dfs(vertex, stack, visited):
    pass


def topSort(graph):
    pass


def main():
    node1 = Node(1)
    node2 = Node(2)
    node3 = Node(3)
    node4 = Node(4)
    node1.replaceNeighbors([node2, node3])
    node2.replaceNeighbors([node4])
    node4.replaceNeighbors([node3])
    root = Node(0, [node1, node2])
    graph = [root, node1, node2, node3, node4]
    order = topSort(graph)
    print(order)


if __name__ == '__main__':
    main()  # calls main method

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM