C++中经常将链表与数组放在一起比较,根据自己的学习和理解,写个文档总结一下。 存储结构 数组:需要一块连续的内存空间来存储,随机访问效率高,但占用内存较大。扩容时需要再申请一块更大的内存空间,将原数组拷贝进去,非常费时。 链表:将一组零散的内存块串起来使用,没有大小的限制,天然支持动态扩容。 时间复杂度 应用场景 数组:随机访问速度要求高;内存要求苛刻。 链表:插入删除速度要求高; 练习 常见的链表有单链表、双向链表和循环链表。可以分别使用循环链表和数组去解决典型的约瑟夫问题,加深理解。