数据结构
文章平均质量分 62
分主题讲解数据结构,java实现
Hoy在coding
写bug小能手
展开
-
【数据结构与算法(Java)】二叉树的前序、中序、后序的遍历与查找
1. 思路1.1 遍历思路(1)前序打印当前节点数值若左树非空,递归左树若右树非空,递归右树(2)中序若左树非空,递归左树打印当前节点数值若右树非空,递归右树(3)后序若左树非空,递归左树若右树非空,递归右树打印当前节点数值1.2 查找思路(1)前序检查当前节点值,若与输入值相等,则返回当前节点设置临时节点变量node,用于储存找到的节点(初始化为null)查询左树若左树非空,递归左树,并将返回结果赋值给临时变量node递归完成,若node非null,原创 2021-03-26 17:08:48 · 126 阅读 · 0 评论 -
【数据结构与算法(Java)】哈希表(取模)
1. 哈希表基本思路建立一个数组,存放若干链表添加节点时,通过哈希函数,确定应当放入的链表,并将节点插入该链表2. 基本结构2.1 SingleNodeint idint/String dataSingleNode nextSingleNode2.2 SingleLinkedListSingleNode headNodeisEmpty()addNode()displayAllNodeData()findNode()deleteNode()2.3 HashTable原创 2021-03-18 11:15:52 · 957 阅读 · 4 评论 -
【数据结构与算法(Java)】逆波兰计算器(后缀表达式实现)
public class PolandNotation { /** * @author hoy * 中缀表达式 -> 后缀表达式list<String> * 思路: * 1. 创建一个堆栈,operatorStack<string> 用于保留运算符; 创建一个list,postfixList<string> 用于保留中间结果。 * 2. 原始中缀表达式 -> 中缀表达式list&l原创 2021-03-03 10:20:52 · 161 阅读 · 4 评论 -
【数据结构与算法(Java)】计算器(中缀表达式实现)
1. 中缀计算器public class InfixCalculator { /** * @author - hoy * 计算器:计算所给出数学表达式字符串的结果,返回结果值(只计算个位数的数字输入,无括号) * @param expression - 表达式字符串 * @return - 返回计算结果 */ public static int infixCalculator(String expression) { //原创 2021-03-03 10:18:57 · 265 阅读 · 0 评论 -
【数据结构与算法(Java)】栈 Stack(双向链表实现)
1. 应用场景程序的调用:程序指令的地址储存在堆栈内,每执行一个程序,就先放入栈中,执行完当前程序就从栈内取出下一个执行。递归调用的处理:除了存程序指令地址,还存参数、区域变量等。表达式转换和求值:如 “中缀 -> 后缀”二叉树的遍历图的深度优先算法(DFS)2. 特点结构:线性结构栈顶(top) :栈的顶部,出栈入栈的出入口栈底(bottom):栈的底部,最先入栈和最后出栈的位置专有名词:出栈(pop):从 栈顶 取出入栈(push):从 栈顶 放入先进后原创 2021-02-27 21:42:21 · 383 阅读 · 0 评论 -
【数据结构与算法(Java)】栈 Stack(数组实现)
1. 应用场景程序的调用:程序指令的地址储存在堆栈内,每执行一个程序,就先放入栈中,执行完当前程序就从栈内取出下一个执行。递归调用的处理:除了存程序指令地址,还存参数、区域变量等。表达式转换和求值:如 “中缀 -> 后缀”二叉树的遍历图的深度优先算法(DFS)2. 特点结构:线性结构栈顶(top) :栈的顶部,出栈入栈的出入口栈底(bottom):栈的底部,最先入栈和最后出栈的位置专有名词:出栈(pop):从 栈顶 取出入栈(push):从 栈顶 放入先进后原创 2021-02-27 17:07:02 · 213 阅读 · 0 评论 -
【数据结构与算法(Java)】单向环形链表(按顺序添加)
1. 应用场景约瑟夫问题 Joseph(百度百科)2. 思路节点结构:数据域(Data):存储 当前节点 的 数据地址域1(Next):指向 下一个节点 的 地址环形链表结构:头节点:储存环形链表的第一个节点储存方式:尾部节点指向头节点不一定 是连续存储添加节点:本文章按照直接添加到尾节点的方式3. 数据结构(类结构):【节点 SingleNode】(1)成员变量(Field)data: int,节点所储存的数据nextNode: SingleNode,原创 2021-02-27 12:50:45 · 113 阅读 · 0 评论 -
【数据结构与算法(Java)】约瑟夫问题
1. 问题描述设编号为 1,2,3,…,n 的 n 个人围坐在一起,让编号为 k (1 <= k <= n) 的人从 1 开始报数,数到第 m 个的这个人出列,然后从此人的下一人再从 1 开始报数,数到 m 的出列,以此类推,直到所有人都出列。打印出整个过程的出队编号序列。2. 解决思路利用 单向环形链表步骤:初始化环形链表 和 出队数组校验:是否都是正数;startNodeData是否在链表长度范围内设置preNode,作为firstNode的上一个节点将first移动到原创 2021-02-27 12:48:14 · 135 阅读 · 2 评论 -
【数据结构与算法(Java)】双向链表(按顺序添加)
1. 应用场景当不知道数据量大小的时候,可以使用“链表”来动态储存和处理数据需要对链表进行反向操作时2. 思路分类:(本文使用 “有头节点”)有头节点 链表无头节点 链表存储方式:节点节点结构:数据域(Data):存储 当前节点 的 数据地址域1(Next):指向 下一个节点 的 地址地址域2(Pre):指向 上一个节点 的 地址头指针:数据域无意义,只有指向下一节点的地址域不一定 是连续存储本文章按照节点值的 从小到大 顺序添加3. 数据结构(类结构):原创 2021-02-25 12:28:00 · 956 阅读 · 2 评论 -
【数据结构与算法(Java)】单链表(按顺序添加)面试题练习
1. 查找单链表中的倒数第k个节点(新浪)- 思路:找到倒数第k个节点 = 找到正数第(length - k + 1)个节点(1)获取length(2)循环遍历,找到第(length - k + 1)个节点eg.[head], 1, 2, 3, 4, 5, 6, <7>, 8, 9, 10k = 4, length = 10 -> 正数第 10 - 4 + 1 = 7个节点(7)- 实现: public static Node findReciprocalNod原创 2021-02-24 13:22:13 · 162 阅读 · 0 评论 -
【数据结构与算法(Java)】单链表(按顺序添加)
1. 应用场景2. 思路分类:有头节点 链表无头节点 链表存储方式:节点结构:数据(Data):存储 数据本身下一节点指针(Next):指向 下一个节点不一定 是连续存储3. 数据结构(类结构):(1)成员变量(Field)(2)初始化 / 构造器(Constructor)(3)方法(Methods)4. 完整实现...原创 2021-02-22 23:10:46 · 455 阅读 · 3 评论 -
【数据结构与算法(Java)】数组实现环形队列Circle Queue
1. 思路*数组实现队列 Queue(一次性)(环形队列解决的是普通数组队列的不可复用的限制)当添加数据时,rear指向数组最后一位且数组未满,则将 “rear+1” 后对 maxSize进行 取模,即将队列尾部移动到数组头部。front: 指向队列 第一个元素的位置,初始值为0rear: 指向队列 最后一个元素 的 下一个位置,初始值为0队列 已满 的条件:(rear + 1) % maxSize == front队列 为空 的条件:rear == front队列中 有效数据的个数 :原创 2021-01-04 21:55:30 · 148 阅读 · 0 评论 -
【数据结构与算法(Java)】稀疏数组 Sparse Array
1. 应用场景某个数组中大部分元素的值是0或者同一值,可以用 “稀疏数组” 来保存。eg.0 0 0 0 0 0 00 2 0 0 3 0 00 0 0 8 0 0 01 0 0 0 0 0 00 5 0 0 0 9 02. 处理思路(1)思路[0] 记录 “有几行几列” ,有多少 “不同的值”[1]-[n] 把 “不同的值” 的 ”行”、“列”和“值” 记录在一个 “小数组” 里例1.原始二维数组0 0 0 0 0 0 00 2 0 0 3 0 00 0 0 8 0 0原创 2020-12-09 22:35:21 · 104 阅读 · 0 评论 -
【数据结构与算法(Java)】数组实现队列 Queue(一次性)
1. 特点队列是一个 有序列表实现形式:数组 ,链表原则:先入先出(先存的数据先取出,后存的数据后取出)原创 2020-12-16 16:42:11 · 666 阅读 · 0 评论