数据结构与算法学习(3)
数据结构=线性(基本数据结构+逻辑数据结构)+非线性(二维数组, 多维数组, 广义表, 树结构, 图结构)
本篇继续总结线性数据结构
基本数据结构:顺序存储结构(数组)、链式存储结构(链表)
逻辑数据结构:栈、队列、散列表(hash表)(逻辑数据结构都可以由基本数据结构实现)
1、数组
1.1数组的扩容(数组是不可扩容的,但是可以通过其他方法实现扩容的效果)
在数组插入操作时,因为数组在定义的时候已经固定了长度,所以,长度不够需要插入新的元素时,需要创建数组,复制数组达到最终目的。
1.2数组增删、查询的区别
数组查询效率高,因为索引的关系,可以根据索引查询数组中的元素
数组增删会伴随数组中元素的移动,效率低。如下图图解所示:
2、队列
队列插入操作图解:
这里只是举个例子,插入、删除可以在队列头部、尾部、中间操作。
在出队操作时,防止队列长度缩减---循环队列(数组实现,维持队列容量的恒定)
3、散列表(哈希表)
哈希函数类似取模运算,Java使用了位运算