为什么我会在PHP中使用DoublyLinkedList?

时间:2010-12-31 19:13:06

标签: php data-structures

我最近遇到了一些PHP-SPL数据结构,我一直在查看第一个,the doubly linked list。我粗略地了解链接列表是什么,现在我可以看到双重链接列表是什么,但我的问题是:我将在世界上做什么?

我觉得使用数组同样容易。某些计算机科学类型可以启发我吗?

3 个答案:

答案 0 :(得分:9)

与单链表不同,双向链表可以在任一方向上遍历列表,并在O(1)中的列表中间进行对象插入和删除(前提是您已经可以访问列表中的点它会发生在哪里,不像单链表。这就是说,双重链接列表在其他方面表现较差,而且在实践中通常不会出现你会遇到的事情。

答案 1 :(得分:3)

选择一个合适的数据结构并不一定是关于什么对您来说很容易,但是使用更少的内存并且对于机器来说更快。在双向链表的情况下,无论何时需要在任一方向迭代,以恒定速度插入任何位置,但不需要随机访问,它都会很有用。

现在假设在PHP中你通常使用小数据集,你不必非常担心这类事情。如果您正在使用大型数据集,那么最好不要在C中编写代码。因此,您不可能从PHP中的此类结构中获得足够的好处,而无需使用它们。

但是可能存在“介于”之间的区域,其中使用Spl数据结构之一确实降低了内存使用量,足以值得使用。 (我做了一个简单的测试,数组中的1M整数需要200MB。双链表需要150MB。迭代它们的时间非常可比。)

答案 2 :(得分:2)

恕我直言,除非你在谷歌或Facebook这样的公司工作,否则他们在野外遇到类似这样的事情的机会是不可能的,因为他们正在处理疯狂的数据并且需要< / strong>优化列表遍历以允许节点删除和添加。根据经验,如果您的应用程序 缓慢,那么您很可能在其他地方做错了(我知道这不是您的问题,但我认为我只是把它扔进去;))

对于具有中小型数据要求的中小型网站,我会说数组就足够了(更不用说普通网络开发人员更易读和理解了)。)。