Data structures 路由表实现:链表与数组

Data structures 路由表实现:链表与数组,data-structures,routing,arm,Data Structures,Routing,Arm,我试图在BTLE物理层和链路层上实现我自己的路由协议,以便为BTLE无线电提供多跳链路。我也在使用Cortex-M0处理器。我的路由表结构基本如下: |Neighbour Address| Info about Link quality | Possible Destination Addr| 邻居地址将具有直接邻居的地址,而可能的目的地地址字段将具有可从该特定邻居到达的目的地地址(在一个跳内)(路由仅支持2跳通信)。简言之,可能的目的地将具有位于邻居的邻居地址中的元素的条目 我用C语言实现了

我试图在BTLE物理层和链路层上实现我自己的路由协议,以便为BTLE无线电提供多跳链路。我也在使用Cortex-M0处理器。我的路由表结构基本如下:

|Neighbour Address| Info about Link quality | Possible Destination Addr|
邻居地址将具有直接邻居的地址,而可能的目的地地址字段将具有可从该特定邻居到达的目的地地址(在一个跳内)(路由仅支持2跳通信)。简言之,可能的目的地将具有位于邻居的邻居地址中的元素的条目


我用C语言实现了这一点,并为ARM提供了代码魔法工具链。那么,为了构建路由表,应该使用链表还是数组?使用数组将比实现链表更容易,但随后,数组的大小将被预定义和限制。另外,在初始化时,它将占用所有专用于它的空间。为路由表保留空间,这样以后就不会导致内存问题,这真的好吗?还是应该是数据分配更灵活的链表

最好的数据结构是两者兼而有之。您可以在“块”中分配地址表。每个块将包含多个路由表条目和下一个指针。填充块后,可以分配下一个块,并在上一个块的下一个指针中填充它的地址

这种结构兼顾了这两个方面,您可以获得简单表扫描的速度和链表的灵活性

您的网络将有多大?对于非常大的网络,简单表将是性能瓶颈,因此您应该考虑使用前缀的哈希表,这样就不需要遍历整个表来查找特定的邻居。