我需要弄清楚如何制作一个无限的板(有点像wordsquared.com使用的那样),它可以按需扩展而不会丢失已经在板上的对象的位置。
我将使用哪些数据结构来创建类似的电路板?
我还应该提一下,我需要进行位置查询,并能够检查某个点的周围环境。
答案 0 :(得分:1)
使用列表。向板上添加对象时,将其添加到列表中。从板上删除对象时,将其从列表中删除。这是O(1)
用于插入和删除,这与它获得的速度一样快。每个对象都有一个(x,y)
坐标。
或者您还有其他想法吗?我只能回答你实际问的问题......
答案 1 :(得分:0)
我能想到的两种方式:
分配一个节点池,每个节点都有一个指针指向当前节点上方,下方,左侧和右侧的节点。由于你的董事会只应该成长,你不必处理任何丑陋的删除。保持指向电路板左上角的指针,以便于渲染(遍历简单明了)。
分配节点矩阵并按原样使用。当您需要增加电路板时,请分配一个新电路板,然后在删除数据之前将数据从旧数据复制到新数据。这在重新分配时会有点慢,但可以轻松与董事会进行互动。