数据结构和算法02--稀疏数组和队列

  • 稀疏数组:
  1. 当一个数组中大部分元素为0,或者为同一个值的数组是,可以使用稀疏数组来保存该数组.
  2. 处理方法:记录一共几行几列,有多少个不同的值. 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模
  3. 二维数组转稀疏数组思路:   

①遍历原始的二维数组,得到有效数据个数sum

②根据sum就可以创建稀疏数组aparseArr Int[sum+1][3] 

③将二维数组的有效数据存入到稀疏数组

  1. 稀疏数组转原始二维数组的思路:

①先读取稀疏数组第一行,根据第一行的数据,创建原始的二维数组 

②再读取稀疏数组后几行的数据,并赋给原始的二维数组即可

 

 

 

 

  • 队列
  1. 队列是一个有序列表,可以用数组或者是链表来实现
  2. 遵循先入先出
  3. 示意图:
  4. 数组模拟队列 :队列本身是有序列表,若使用数组的结构来存储队列的数据,maxSize是该队列的最大容量,front是队列的最前元素索引-1,rear是队列最后元素索引.

          front==rear 队列为空,rear=maxSize-1,队列满了

          缺陷:前面的元素没有删除,一次性队列.当front==rear==maxSize-1,原意是队列为空,实际并不能插入元素

  1. 数组模拟环形队列  优化思路

front: 指向队列头前一个位置 初始值=-1   =======>指向队列的第一个元素   初始值=0

rear:指向队列的尾部 初始值=-1  =============>指向队列的最后一个元素的后一个位置 初始值=0

当队列满满时, 满 (rear+1)%maxSize==front

当队列为空时,空rear==front

有效数据个数:(rear+maxSize-front)%maxSize

posted on 2019-09-09 11:22  MrYangjl  阅读(109)  评论(0)    收藏  举报

导航