我在学校最后一年开始复习数据结构和算法,以确保我掌握了所有内容。其中一个复习问题说“使用链表或动态数组实现堆栈,并解释为什么你做出了最佳的选择”。
对我来说,使用带有尾指针的列表来实现堆栈更直观,因为它可能需要经常调整大小。对于大量的数据来说,似乎使用列表是更好的选择,因为动态数组重新调整大小是一项昂贵的操作。此外,使用列表不需要分配比实际需要更多的空间,因此更节省空间。
然而,动态数组肯定可以更快地添加数据(除了需要重新调整大小的情况)。但是,我不确定使用数组是否总体上更快,还是只有在不需要重新调整大小的情况下才更快。
书中的解决方案表示,“对于存储非常大的对象,列表是更好的实现方式”,但我不明白为什么。
哪种方法最好?应该使用哪些因素来确定“最佳”实现方式?此外,我的逻辑有问题吗?