1

我正在尝试对包含一个或多个形状的复合对象进行建模。为简单起见,我假设形状都是矩形。合成可能看起来像这样(原谅我糟糕的 ASCII 艺术):

+---+-------+---+
| | 2 | 5 |
| +-------+---+
| 1 | 3 | |
| +-------+ 6 |
| | 4 | |
+---+-------+---+

维基百科向我指出了图论,我在大学时几乎不记得了,而且邻接表似乎是对所有这些形状之间的关系进行建模的好方法。

我的问题是,我可以在邻接列表中指示左、右、上和下关系吗?说 1 与 2 相邻是不够的;我需要说 1 是 2 的左边(并且 3 在 4 之上,等等)。

4

1 回答 1

1

当然。您的正常邻接列表可能如下所示:

vertex {
    neighbours: // list of neighbours
}

为了包含相对位置,每个顶点可以有每个方向的邻接列表:

vertex {
    left: ...
    right: ...
    up: ...
    down: ...
}

所以:

3 {
    left: [1]
    right: [6]
    up: [2]
    down: [4]
}

1 {
    left: []
    right: [2,3,4]
    up: []
    down: []
}
于 2011-04-25T00:47:25.223 回答