一个关于链式存储和顺序存储的问题

来源:1-3 在学习算法和数据结构的具体知识前,你可能想读一读这两篇文章

那红尘

2020-04-18

底层用数组实现的就一定是顺序存储吗?用链表/树结构实现的都是链式存储吗?
在java中的哈希表是一个treemap的数组,在哈希冲突达到一定时,链表会进化成红黑树,而且哈希表的key是散列在数组中的,并不连续,那哈希表到底是顺序存储还是链式存储呢?

写回答

1回答

liuyubobobo

2020-04-18

是的。数组叫顺序存储;链表,和基于 node 的树结构都是链式存储。

注意,这里我说基于 node 的树结构,因为树结构也可以顺序存储。比如这个课程中介绍的堆,本质是树,但是因为是完全树,所以我们可以使用数组表示这棵树;再比如这个课程中介绍的并查集,也是一个树结构,但是,我们也使用数组就表示了这个结构。


2

这个 treemap 的数组是顺序存储,每个数组中的元素其实是一个地址。这个地址指向了一个链表或者红黑树,相应的每个链表或者红黑树是链式存储。


继续加油!:)

1
0

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11198 学习 · 1617 问题

查看课程