我最近遇到了一些PHP-SPL数据结构,我一直在查看第一个,the doubly linked list。我粗略地了解链接列表是什么,现在我可以看到双重链接列表是什么,但我的问题是:我将在世界上做什么?
我觉得使用数组同样容易。某些计算机科学类型可以启发我吗?
答案 0 :(得分:9)
与单链表不同,双向链表可以在任一方向上遍历列表,并在O(1)中的列表中间进行对象插入和删除(前提是您已经可以访问列表中的点它会发生在哪里,不像单链表。这就是说,双重链接列表在其他方面表现较差,而且在实践中通常不会出现你会遇到的事情。
答案 1 :(得分:3)
选择一个合适的数据结构并不一定是关于什么对您来说很容易,但是使用更少的内存并且对于机器来说更快。在双向链表的情况下,无论何时需要在任一方向迭代,以恒定速度插入任何位置,但不需要随机访问,它都会很有用。
现在假设在PHP中你通常使用小数据集,你不必非常担心这类事情。如果您正在使用大型数据集,那么最好不要在C中编写代码。因此,您不可能从PHP中的此类结构中获得足够的好处,而无需使用它们。
但是可能存在“介于”之间的区域,其中使用Spl数据结构之一确实降低了内存使用量,足以值得使用。 (我做了一个简单的测试,数组中的1M整数需要200MB。双链表需要150MB。迭代它们的时间非常可比。)
答案 2 :(得分:2)
对于具有中小型数据要求的中小型网站,我会说数组就足够了(更不用说普通网络开发人员更易读和理解了)。)。