我将使用什么样的数据结构来容纳无限网格?

时间:2011-07-25 00:51:28

标签: data-structures language-agnostic

我需要弄清楚如何制作一个无限的板(有点像wordsquared.com使用的那样),它可以按需扩展而不会丢失已经在板上的对象的位置。

我将使用哪些数据结构来创建类似的电路板?

我还应该提一下,我需要进行位置查询,并能够检查某个点的周围环境。

2 个答案:

答案 0 :(得分:1)

使用列表。向板上添加对象时,将其添加到列表中。从板上删除对象时,将其从列表中删除。这是O(1)用于插入和删除,这与它获得的速度一样快。每个对象都有一个(x,y)坐标。

或者您还有其他想法吗?我只能回答你实际问的问题......

答案 1 :(得分:0)

我能想到的两种方式:

  1. 分配一个节点池,每个节点都有一个指针指向当前节点上方,下方,左侧和右侧的节点。由于你的董事会只应该成长,你不必处理任何丑陋的删除。保持指向电路板左上角的指针,以便于渲染(遍历简单明了)。

  2. 分配节点矩阵并按原样使用。当您需要增加电路板时,请分配一个新电路板,然后在删除数据之前将数据从旧数据复制到新数据。这在重新分配时会有点慢,但可以轻松与董事会进行互动。