
Java数据结构
数据结构与算法Java代码实现
Dreaming_Joker
技术改变生活!
展开
-
Java数据结构与算法——栈(栈的入门与介绍)
栈的一个实际需求请输入一个表达式计算式:[722-5+1-5+3-3] 点击计算【如下图】请问: 计算机底层是如何运算得到结果的? 注意不是简单的把算式列出运算,因为我们看这个算式7 * 2 * 2 -5, 但是计算机怎么理解这个算式的(对计算机而言,它接收到的就是一个字符串),我们讨论的是这个问题。-> 栈栈的介绍栈的英文为(stack)栈是一个先入后出(FILO-First In Last Out)的有序列表。栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行原创 2020-06-01 13:43:36 · 264 阅读 · 0 评论 -
Java数据结构与算法——链表(环形链表与Josephu 问题)
Josephu 问题约瑟夫问题的示意图:Josephu 问题Josephu 问题为:设编号为1,2,… n 的n 个人围坐一圈,约定编号为k(1<=k<=n)的人从1 开始报数,数到m 的那个人出列,它的下一位又从1 开始报数,数到m 的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。提示用一个不带头结点的循环链表来处理Josephu 问题:先构成一个有n 个结点的单循环链表,然后由k 结点起从1 开始计数,计到m 时,对应结点从链表中删除,然后再从被删除结原创 2020-05-31 11:46:44 · 285 阅读 · 0 评论 -
Java数据结构与算法——链表(手撕双向链表)
双向链表应用实例双向链表的操作分析和实现 使用带head 头的双向链表实现–水浒英雄排行榜管理单向链表的缺点分析:单向链表,查找的方向只能是一个方向,而双向链表可以向前或者向后查找。单向链表不能自我删除,需要靠辅助节点,而双向链表,则可以自我删除,所以前面我们单链表删除时节点,总是找到temp,temp 是待删除节点的前一个节点(认真体会).分析了双向链表如何完成遍历,添加,修改和删除的思路对上图的说明:分析双向链表的遍历,添加,修改,删除原创 2020-05-28 15:27:51 · 479 阅读 · 0 评论 -
Java数据结构与算法——链表(手撕单链表)
一、链表(Linked List)介绍链表是有序的列表,但是它在内存中是存储如下小结上图:链表是以节点的方式来存储,是链式存储每个节点包含data 域, next 域:指向下一个节点.如图:发现链表的各个节点不一定是连续存储.链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定单链表(带头结点) 逻辑结构示意图如下二、单链表的应用实例使用带head 头的单向链表实现–水浒英雄排行榜管理完成对英雄人物的增删改查操作, 注: 删除和修改,查找在添加英雄时,根据排名将英雄插入原创 2020-05-26 13:23:29 · 399 阅读 · 0 评论 -
Java数据结构与算法——队列与环形队列
队列与环形队列一、队列介绍队列是一个有序列表,可以用数组或是链表来实现。遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出示意图:(使用数组模拟队列示意图)== 二、数组模拟队列思路== 队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下图, 其中maxSize 是该队列的最大容量。 因为队列的输出、输入是分别从前后端来处理,因此需要两个变量front原创 2020-05-25 11:56:07 · 363 阅读 · 0 评论 -
Java数据结构与算法——稀疏数组与二维数组的转换
二维数组与稀疏数组的互相转换基本介绍:当一个数组大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理办法:(1)、记录数组一共有几行几列,有几个不同的值。(2)、把具有不同的值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模。应用实例1)、使用稀疏数组来保留之前的二维数组(棋盘、地图)2)、把稀疏数组存盘、并且可以重新恢复原来的二维数组 二维数组转稀疏数组的实例:1)、遍历原始的数组,得到有效数据的个数sum2)、根据sun就可以创建稀疏原创 2020-05-25 11:28:18 · 399 阅读 · 1 评论