数组和链表比较
数组优缺点
- C/C++直接支持
- 提供随机访问
- 在编译时确定大小
- 插入和删除元素费时
链表优缺点
- 运行时确定大小
- 快速插入和删除元素
- 不能随机访问
- 用户必须提供编程支持
删除和插入元素过程
- 在数组中插入元素,必须移动其他元素以腾出空位,然后再插入,插入的元素离数组开头越近,要被移动的元素越多。在链表中插入节点却非常简单,只需要给两个指针赋值。
- 在数组中删除一个元素同样要移动许多相关元素,但是链表删除节点只需要重新设置一个指针并释放被删除节点占用的内存即可。
访问元素
对于数组而言,可以使用数组下标直接访问该数组的任意元素,这叫做随机访问。对于链表而言,必须从链表的首节点开始,逐个节点移动到要访问的节点,这叫做顺序访问。可以先排序,再查找,以提高效率。
总结
选择何种数据类型取决于具体的问题。如果因频繁插入和删除元素导致经常调整大小,而不需要经常查找,选择链表比较好。如果只是偶尔插入或删除项,但是需要经常查找,使用数组更好。
如果需要一种支持频繁插入和删除项又支持频繁查找的数据形式。数组和链表都无法胜任。应选择二叉查找树。