数据结构分为线性数组与非线性数组
线性结构(数组、队列、链表、栈)
非线性结构(二维数组、多维数组、广义表、树结构、图结构)
- 稀疏数组
当数组中大部分元素为0或者同一个值,采用稀疏数组保存
//创建稀疏数组
int[][] sparseArray = new int[sum+1][3];
//给稀疏数组赋值
sparseArray[0][0] = 11;
sparseArray[0][1] = 11;
sparseArray[0][2] = sum;
//将非0的数放入稀疏数组
//count:标识第几个非0数
int count = 0;
for (int i = 0;i<11;i++){
for(int j = 0;j<11;j++){
if(array[i][j] != 0){
count++;
sparseArray[count][0] = i;
sparseArray[count][1] = j;
sparseArray[count][2] = array[i][j];
}
}
}
- 队列:
有序列表,可以是数组或链表实现
遵循先入先出
元素maxSize、rear(队列尾指针)、front(队列头指针)
- 链表:
- 节点的方式存储
- 节点含data域,next域
- 各个节点不一定是连续存储
- 链表分带头节点链表和没有头结点链表