我知道如何使用数组实现链表。例如 我们定义一个结构如下:
struct Node{
int data;
int link;
}
“data”存储信息,“link”将索引存储在下一个节点的数组中。
有人能告诉我使用数组实现链表与“普通”链表相比有什么优缺点?任何建议将不胜感激。
答案 0 :(得分:10)
如果您使用数组备份链接列表,则最终会遇到的缺点。因此,这可能不是实现它的好方法。
一些直接的缺点:
我认为有一些好处:
mmap()
调用将其重新读入。但是,最好使用某种协议缓冲区来实现可移植性。答案 1 :(得分:2)
有人能告诉我使用数组实现链表的优势和劣势与“普通”链表相比有哪些?
链接列表具有以下复杂性:
如果您的表示使用严格的连续数组,则会有不同的复杂性:
也就是说,根据数组实现的链表API将表现得像一个数组。
您可以通过使用严格数组的链接列表或树来缓解这种情况,从而导致绳索或指树或延迟序列。
答案 2 :(得分:0)
以两种方式实现堆栈。 首先使用数组,第二个使用链表。
使用数组的一些不利因素然后大多数程序员在堆栈工具中使用链表。
首先是使用链表的堆栈首先不要声明堆栈大小而不限制堆栈中的数据存储。第二个是指针文章中的链表,用于声明和使用它。
链接列表中只使用一个指针。它叫做顶尖指针。
堆栈是lifo方法的用法。但链表程序实现中有一些缺点。
大多数程序员使用喜欢列表来使用堆栈实现。
答案 3 :(得分:0)
使用Array实现,您可以使用顺序&另一方面,更快地访问列表节点, 如果使用指针实现链接列表,则可以随机访问节点。 当您处理固定的no时,数组实现很有用。对于元素,因为就性能而言,调整数组的大小是昂贵的,因为如果需要从列表的中间插入/删除节点,则必须在每个节点之后移位。 与此相反,当你不知道没有时,你应该使用指针实现。你想要的节点,因为这样的列表可以有效地增长/缩小你不需要移动任何节点,只需解除引用即可完成。引用指针。