数据结构
-
线性结构
- 其特点是数据元素之间存在一对一的线性关系,线性结构有两种不同的存储结构,即顺序存储结构和链式存储结构,常见有:数组,队列.链表和栈 非线性结构
- 非线性结构一般包括:二维数组,多维数组,广义表,树结构,图结构
稀疏数组
1)稀疏数组格式:第一行,有三列,分别存储,原始数组的行,列,以及有效数值,第二行开始,存取第几行,第几列,数值是什么,依次类推.
-
二维数组转稀疏数组的思路
-
1)遍历原始的二维数组,得到有效数的个数,sum
2)根据sum创建稀疏数组,第一行的前面两个值是固定的parseArr[sum+1][3] ,这里为什么要+1,因为第一行已经被赋值了,他有多少个有效值,我们就要创建多少行,因为每一个有效值都对应着该值的行和列
稀疏数组转为二维数组的思路
- 1)先读取稀疏数组的第一行的第一列和第二列,分别给将要还原的二维源数组赋值,为它的行和列
- 2)读取稀疏数组的后面几行,将读取到的数据付给源数组
队列
1)队列是一个有序列表,可以用数组和链表来实现,遵循先入先出的原则,即:先存入的队列数据先取出,后存入后取出
-
数组模拟队列
-
1)rear(后面的)指向队列尾部(就是队列的最后一个位置),通常当我们加入数据的时候,它的值就会➕1
2)front(前面的),当我们删除一个数据时,它就减一,maxSize(最大容量),它指向队列的前一个位置
3)rear=.=front表示数据为空,rear==maxsize-1表示队列满
4)rear和front的值默认负一,实现案列,请通过以上模拟实现一个队列.
-
思路
- 因为队列的输出,输入分别从前后端来处理,因此需要两个变量front 及rear分别记录队列前后端的下标,front会随着数据输出而改变,而rear则是随着数据输入而改变.maxSize-1最大下标,rear==maxSize-1表示已满 问题分析并优化
- 1)目前数组使用一次就不能用,没有达到复用的效果
- 2)将这个数组使用算法,改进成一个环形队列 取模:%