Mel*_*Mel 1 perl directed-graph data-structures
我有一个数据文件,其中包含表示河流流量关系的配对值列表.
该文件具有此结构
Node Downstream Node
A B
B C
C D
E C
etc
Run Code Online (Sandbox Code Playgroud)
我需要做的是读取此文件,然后对于任何给定节点,我需要打印所有的UPSTREAM节点.
在上面的例子中,如果我输入C,我会得到E,B,A.
我在Linux机器上使用perl,我写这篇文章的人也是.谢谢.
您问题的正确数据结构是图表:
#!/usr/bin/env perl
use warnings; use strict;
use Graph::Directed;
my $g = Graph::Directed->new;
while (my $line = <DATA>) {
last unless $line =~ /\S/;
my ($v1, $v2) = split ' ', $line;
$g->add_edge($v1, $v2);
}
print $g->all_predecessors('D'), "\n";
__DATA__
A B
B C
C D
E C
Run Code Online (Sandbox Code Playgroud)
C:\Temp> h ACEB