![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
猫不夜行
静水流深,物我两忘
展开
-
Java数据结构介绍(线性结构和非线性结构)
数据结构包括:线性结构和非线性结构。线性结构数据元素之间存在一对一的线性关系 包括顺序存储结构和链式存储结构。顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的 链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息 线性结构常见的有:数组、队列、链表和栈非线性结构非线性结构包括:二维数组,多维数组,广义表,树结构,图结构...原创 2019-07-24 15:49:00 · 132 阅读 · 0 评论 -
Java数据结构之稀疏数组(Sparse Array)
1.需求编写的五子棋程序中,有存盘退出和续上盘的功能。因为该二维数组的很多值是默认值0,因此记录了很多没有意义的数据,为了压缩存储所以采用稀疏数组。2.基本介绍当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。处理方法:记录数组一共有几行几列,有多少个不同的值把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模...原创 2019-07-24 16:15:00 · 92 阅读 · 0 评论 -
Java数据结构之队列(Queue)
1.使用场景银行排队的案例:2.队列介绍队列是一个有序列表,可以用数组或是链表来实现。遵循先入先出的原则:先存入队列的数据,要先取出。 后存入的要后取出示意图:(使用数组模拟队列示意图)3.实现方式1:数组模拟队列思路分析队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下图, 其中 maxSize 是该队列的最大容量。f...原创 2019-07-24 17:07:00 · 187 阅读 · 0 评论 -
Java数据结构之链表(Linked List)
1.链表(Linked List)介绍链表是有序的列表,但是它在内存存储结构如下:2.特点:链表是以节点的方式来存储,是链式存储 每个节点包含 data 域, next 域:指向下一个节点. 链表的各个节点不一定是连续存储. 链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定3.单链表介绍单链表(带头结点) 逻辑结构示意图如下:4.应用示例:使用...原创 2019-07-24 17:36:00 · 563 阅读 · 1 评论 -
Java数据结构之双向链表
管理单向链表的缺点分析:单向链表,查找的方向只能是一个方向,而双向链表可以向前或者向后查找。单向链表不能自我删除,需要靠辅助节点 ,而双向链表,则可以自我删除,所以前面我们单链表删除时节点,总是找到temp,temp是待删除节点的前一个节点。示意图对上图的说明:分析双向链表的遍历、添加、修改、删除的操作思路:1)遍历:方法和单链表一样,只是可以向前查找,也可以向后查找...原创 2019-07-24 23:01:00 · 67 阅读 · 0 评论 -
Java数据结构之单向环形链表(解决Josephu约瑟夫环问题)
1.Josephu(约瑟夫、约瑟夫环)问题:设编号为1,2,… n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。提示:用一个不带头结点的循环链表来处理Josephu 问题:先构成一个有n个结点的单循环链表,然后由k结点起从1开...原创 2019-07-24 23:28:00 · 277 阅读 · 0 评论 -
Java数据结构之栈(Stack)
1.栈(Stack)的介绍栈是一个先入后出(FILO:First In Last Out)的有序列表。栈(Stack)是限制线性表中元素的插入和删除只能在同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶而删除元素刚好相反,最后放入的元...原创 2019-07-25 00:16:00 · 381 阅读 · 0 评论 -
Java数据结构之递归(Recursion)
1. 递归解决问题各种数学问题如:8皇后问题,汉诺塔,阶乘问题,迷宫问题,球和篮子的问题(google编程大赛) 各种算法中也会使用到递归,比如快速排序,归并排序,二分查找,分治算法等 将用栈解决的问题—>代码比较简洁2. 递归调用机制当程序执行到一个方法时,就会开辟一个独立的空间(栈)每个空间的数据(局部变量)是独立的3. 递归原则1)执行一个方法时,就创建...原创 2019-07-25 01:21:00 · 121 阅读 · 0 评论 -
Java数据结构之算法时间度
1.度量一个程序(算法)执行时间的两种方法1)事后统计的方法这种方法可行, 但是有两个问题:一是要想对设计的算法的运行性能进行评测,需要实际运行该程序;二是所得时间的统计量依赖于计算机的硬件、软件等环境因素, 这种方式,要在同一台计算机的相同状态下运行,才能比较那个算法速度更快。2)事前估算的方法通过分析某个算法的时间复杂度来判断哪个算法更优。2.时间频度基本介绍:一个算...原创 2019-07-25 11:58:00 · 143 阅读 · 0 评论