数据结构和算法02--稀疏数组和队列
- 稀疏数组:
- 当一个数组中大部分元素为0,或者为同一个值的数组是,可以使用稀疏数组来保存该数组.
- 处理方法:记录一共几行几列,有多少个不同的值. 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模
- 二维数组转稀疏数组思路:
①遍历原始的二维数组,得到有效数据个数sum
②根据sum就可以创建稀疏数组aparseArr Int[sum+1][3]
③将二维数组的有效数据存入到稀疏数组
- 稀疏数组转原始二维数组的思路:
①先读取稀疏数组第一行,根据第一行的数据,创建原始的二维数组
②再读取稀疏数组后几行的数据,并赋给原始的二维数组即可


- 队列
- 队列是一个有序列表,可以用数组或者是链表来实现
- 遵循先入先出
- 示意图:
![]()
-
数组模拟队列 :队列本身是有序列表,若使用数组的结构来存储队列的数据,maxSize是该队列的最大容量,front是队列的最前元素索引-1,rear是队列最后元素索引.
front==rear 队列为空,rear=maxSize-1,队列满了
缺陷:前面的元素没有删除,一次性队列.当front==rear==maxSize-1,原意是队列为空,实际并不能插入元素
- 数组模拟环形队列 优化思路
front: 指向队列头前一个位置 初始值=-1 =======>指向队列的第一个元素 初始值=0
rear:指向队列的尾部 初始值=-1 =============>指向队列的最后一个元素的后一个位置 初始值=0
当队列满满时, 满 (rear+1)%maxSize==front
当队列为空时,空rear==front
有效数据个数:(rear+maxSize-front)%maxSize


浙公网安备 33010602011771号