数据结构
一、稀疏数组
1、基本介绍
当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。
稀疏数组的处理方法是:
1)记录数组一共有几行几列,有多少个不同的值。
2)把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模。
2、思路分析
a、二维数组转稀疏数组思路
- 遍历原始的二维数组,得到有效的数据个数sum
- 根据sum就可以创建稀疏数组,
spareArr int[sum+1][3]
- 将二维数组的有效数据存入到稀疏数组中
- 把稀疏数组的数据写入到本地磁盘中,通过IO的Writer
b、稀疏数组转二维数组思路
- 把稀疏数组的数据从本地磁盘中读取到程序中,通过IO的Reader
- 先读取稀疏数组的第一行,根据第一行的数据去创建原始的二维数组,比如
charAyy int[11][11]
- 再读取稀疏数组的后几行数据,并赋给原始的二维数组即可
3、代码实现
二、队列
1、基本介绍
- 队列是一个有序列表,可以用数组或者链表来实现。
- 遵循先入先出的原则,即:先存入队列中的数据先取出,后存入队列中的数据后取出。
2、数组模拟队列思路分析
- 队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的maxSize是该队列的最大容量
- 因为队列的输入、输出是分别从前后端来处理。因此需要两个变量front以及rear分别记录队列前后端的下标,front会随着数据输出而改变,而rear是随着数据输入而改变。
当我们把数据存入队列时称为"addQueue",addQueue的处理需要两个步骤:
1)将尾指针往后移:rear+1,当front - rear(空)
2)若尾rear小于队列的最大下标 maxSize-1,则将数据存入rear所指的数组元素中,否则无法存入数据,rear = maxSize-1[队列满]。
三、链表
1、基本介绍
1、链表是节点的方式来存储
2、每个节点包含data域,next域:指向下一个节点
3、发现链表的各个节点不一定是连续存储
4、链表分为带头节点的链表和不带头节点的链表