给出如下图形数据类型:
data Graph = Int :~> [Graph]
infixr :~>
以及像这样的边缘列表:
edges = [(10,1), (10,5), (1,2), (2,3), (5,6), (5,9), (9,8)]
如下构建图形的功能是什么:
result = 10 :~> [ 1 :~> [ 2 :~> 3 :~> [] ]
, 5 :~> [ 6 :~> [], 9 :~> 8 :~> [] ]
]
我确信它在我面前是正确的,但我有点疲惫,并会很感激帮助。谢谢!
答案 0 :(得分:2)
map fst edges
列表中,但不在map snd edges
列表中。正如luqui所说,你需要考虑一些你没有找到这样一个节点的情况(或者你找到不止一个节点)答案 1 :(得分:0)
不是您想要的,但Data.Graph
库的containers
模块可以提供帮助。
import Data.Graph
bounds = (1,10)
edges = [(10,1), (10,5), (1,2), (2,3), (5,6), (5,9), (9,8)]
> buildG bounds edges
array (1,10) [(1,[2]),(2,[3]),(3,[]),(4,[]),(5,[9,6]),(6,[]),(7,[]),(8,[]),(9,[8]),(10,[5,1])]