数据结构与算法学习(3)

数据结构=线性(基本数据结构+逻辑数据结构)+非线性(二维数组, 多维数组, 广义表, 树结构, 图结构)

本篇继续总结线性数据结构

基本数据结构:顺序存储结构(数组)、链式存储结构(链表)
逻辑数据结构:栈、队列、散列表(hash表)(逻辑数据结构都可以由基本数据结构实现)

1、数组

1.1数组的扩容(数组是不可扩容的,但是可以通过其他方法实现扩容的效果)
在数组插入操作时,因为数组在定义的时候已经固定了长度,所以,长度不够需要插入新的元素时,需要创建数组,复制数组达到最终目的。

1.2数组增删、查询的区别
数组查询效率高,因为索引的关系,可以根据索引查询数组中的元素
数组增删会伴随数组中元素的移动,效率低。如下图图解所示:
数组的增加操作

2、队列
队列插入操作图解:
队列插入操作图解
这里只是举个例子,插入、删除可以在队列头部、尾部、中间操作。

在出队操作时,防止队列长度缩减---循环队列(数组实现,维持队列容量的恒定)

3、散列表(哈希表)
散列表(哈希表)
哈希函数类似取模运算,Java使用了位运算

posted @ 2021-02-07 13:45  明月0606  阅读(58)  评论(0编辑  收藏  举报