父子Perl数据结构

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,我写这篇文章的人也是.谢谢.

Sin*_*nür 5

您问题的正确数据结构是图表:

#!/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