# DataStructurse **Repository Path**: Vegetable_java_dog/DataStructurse ## Basic Information - **Project Name**: DataStructurse - **Description**: 一个Java门下菜狗的有关数据结构和算法的学习笔记 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-12-23 - **Last Updated**: 2022-01-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: 数据结构, 算法 ## README # 零_算法和数据结构 ## 1.数据机构和算法 ### 学习内容 1. 数据机构和算法的介绍 2. 稀疏数组和队列 3. 链表 4. 栈 5. 递归 6. 排序算法 7. 查找算法 8. 哈希表 9. 树结构基础部分 10. 树结构实际应用 11. 多路查找树 12. 图 13. 程序员常用十大算法 ## 2.数据结构和算法的概述 ### 1.数据结构和算法的关系 程序 = 数据结构 + 算法 数据结构是算法的基础,想要学好算法,需要把数据结构学到位。 数据结构包含**线性结构**和**非线性结构**。 ### 2.线性结构和非线性结构 线性结构 1. 线性结构有两种不同的存储结构,即顺序存储结构和链式存储结构。顺序存储的线性表称为顺序表,顺序表种地数据是连续的。 2. 链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素地址信息。 3. 线性结构常见的有:数组、队列、链表和栈。 4. 线性结构作为最常用的数据结构,其特点是**数据元素之间存在一对一**的线性关系。 非线性结构 非线性结构包括:二维数组、多维数组、广义表、树结构、图结构。 # 一_稀疏数组和队列 ## 一.稀疏Sparsearray数组 ### 1.基本介绍 当一个数组中大部分元素为0,或者为同一个值或者数组时,可以使用稀疏数组来保存该数组。 稀疏数组的处理办法: 1. 记录数组一共有几行几列,有多少个不同的值。 2. 把具有不同值的元素的行列及值记录再一个小规模的数组(稀疏数组)中,从而缩小程序的规模。 如图所示: ![img.png](ImgBook/img1-1.png) ### 2.应用实例 五子棋棋盘数据保存 ![img.png](ImgBook/img1-2.png) 二维数组转稀疏数组思路: 1. 遍历原始的二维数组,得到有效数据的个数sum。 2. 根据sum就可以创建稀疏数组sparseArr int[sum+1][3]。 3. 将二维数组的有效数据存入到稀疏数组。 稀疏数组转原始二维数组的思路: 1. 先读取稀疏数组第一行,根据第一行的数据,创建原始的二维数组。 2. 再读取稀疏数组后面几行的数据,并赋给原始的二维数组。