Java数据结构
minus_yao
这个作者很懒,什么都没留下…
展开
-
Java-数据结构系列五:单链表面试题
1.针对单向链表的操作,归纳整理常见面试题目,承接Java-数据结构系列四:链表(https://blog.csdn.net/money_yao/article/details/99408241)2.求单链表中有效节点的数量如果是带头节点的链表,不统计头节点public class SingleLinkedListDemo { public static void main...原创 2019-08-14 10:23:34 · 200 阅读 · 0 评论 -
Java-数据结构系列三:数组模拟环形队列,实现数组复用
1.背景:数组实现队列存在的问题:队列中数据取出后,其指向的空间无法再加入新的数据,会造成空间的浪费,因此需要对数组模拟队列进行优化;https://blog.csdn.net/money_yao/article/details/992944422.环形队列思路:front变量指向队列的第一个元素,初始值为0; rear变量指向队列最有一个元素的后一个位置,空出一个空间作为约定,初始值为...原创 2019-08-13 09:36:35 · 352 阅读 · 0 评论 -
Java-数据结构系列十:逆波兰计算器(含中缀表达式转后缀表达式)
1.逆波兰表达式(后缀表达式)的计算过程:例如:“(3+4)*5-6”对应的逆波兰表达式为“3 4 + 5 * 6 -”,针对后缀表达式使用栈求值的步骤: 从左至右扫描,将3和4压入堆栈; 遇到+运算符,弹出栈顶元素4和次顶元素3,计算3+4的值,得7后将7入栈; 将5入栈; 遇到*运算符,弹出7和5,计算乘积为35压入栈中; 将6入栈; 遇到-运算符,弹出栈顶元素和次顶元素,计算...原创 2019-09-12 23:09:12 · 2077 阅读 · 0 评论 -
Java-数据结构系列九:栈实现计算器(中缀表达式)
1.要求:输入表达式“80/2-3+12*6-4”计算结果2.使用栈完成表达式计算:输入是String字符串类型的表达式,输出应该是结果类型,需要考虑多位数的问题;用两个栈来完成,数栈numStack存放数据,符号栈operStack存放运算符; 通过index值(索引)遍历表达式; 若是数字,直接入数字栈;若是符号,分如下情况: 若当前的符号栈为空,直接入符号栈; 若符号栈有操...原创 2019-09-12 23:08:43 · 528 阅读 · 5 评论 -
Java-数据结构系列二:数组实现队列
1.队列介绍:队列是有序列表,可以用数组或链表实现, 队列遵循先入先出的原则,先存入队列的数据,先取出,后存入的数据后取出, 队列是有序列表,若使用数组的结构来存储队列的数据,maxSize指定队列的最大容量, 队列的输入输出是分别从前后端处理,需要两个变量fronth及rear分别记录队列前后端的下标,front会随数据输出改变,rear随着数据输入而改变; 数据存入队列时的方法是a...原创 2019-08-12 15:16:25 · 171 阅读 · 0 评论 -
Java-数据结构系列一:稀疏数组与二维数组相互转化(含输入输出流)
1.应用场景:棋盘、地图等二维数组默认值为0,记录了相当多没有意义的数据;当一个数组中大部分元素为同一个值时,可以使用稀疏数组来保存该数组; 稀疏数组的处理方法是: 记录数据共几行几列,有多少不同的值, 把具有不同值的元素的行列坐标及值记录在一个小规模的数组中,从而缩小程序的规模; 补充一点输入输出流的基础知识: Java的文件流: Java的输入输出流(InputStrea...原创 2019-08-12 12:13:32 · 326 阅读 · 0 评论 -
Java-数据结构系列七:单向环形链表(约瑟夫环 Josephu问题)
1.背景描述:Josephu问题:设编号为1,2,3,...n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,以此类推,直到所有人都出列为止,由此产生一个出队编号的序列。 用一个不带头节点的循环链表来处理Josphu问题:先构成一个有n个节点的单循环链表,然后由k节点从1开始计数,计到m时,对应...原创 2019-08-14 10:52:48 · 318 阅读 · 0 评论 -
Java-数据结构系列六:双向链表
1.背景介绍:单向链表查找的方向只能是一个方向,而双向链表可以向前/向后查找; 单向链表不能自我删除,需要靠辅助节点,而双向链表可以自我删除; 分析完成双向链表的遍历、添加、修改、删除; 遍历与单向链表一样,可以向前/向后查找; 添加,默认添加到最后,或根据编号添加到相应位置; 修改与单向链表操作一致; 删除,由于是双向链表,可以实现自我删除某个节点,如删除temp,则temp.p...原创 2019-08-14 10:30:56 · 166 阅读 · 1 评论 -
Java-数据结构系列四:链表
1.链表:链表是有序的列表,在内存中存储的链表的各个节点不一定是连续存储; 链表是以节点的方式来存储,是链式存储; 每个节点包含data域,next域(指向下一个节点的地址); 链表分带头节点的链表和没有头节点的链表;2.实例:使用带head节点的单向链表实现水浒英雄排行榜管理完成对英雄人物的增删改查操作3.单向链表分析定义HeroNode类,定义节点属性; 定义节点管理类S...原创 2019-08-13 10:25:33 · 124 阅读 · 0 评论