Java数据结构
文章平均质量分 60
DempseyLee
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【java数据结构】递归应用: 迷宫回溯问题和八皇后问题
目录 01 递归 1.1 递归的调用机制 1.2 递归能解决的问题 02 迷宫回溯问题 2.1 代码示例 03 八皇后问题 3.1 八皇后算法思路分析 3.2 代码示例 01 递归 简单的说,递归就是方法自己调用自己,每次调用时传入不同变量, 递归有著姐编程者解决复杂的问题,同时可以使代码变得简洁。 调用递归时需要有一个跳出递归的出口,否则会栈溢出 1.1 递归的调用机制 打印问题 阶乘问题 public class RecursionTest { .原创 2022-03-18 00:28:08 · 978 阅读 · 0 评论 -
【数据结构】java实现队列
目录 01 队列概述 02 队列的抽象数据类型描述 03 队列顺序存储实现(非循环队列) 04 循环队列的代码实现 01 队列概述 队列(Queue):具有一定操作约束的线性表 插入和删除操作:只能在一端插入,而在另一端删除。 数据插入: 入队列(addQueue) 数据删除:出队列(deleteQueue) 先来先服务 先进先出 02 队列的抽象数据类型描述 类型名称:队列(Queue) 数据对象集:一个有0个或多个元素的有穷线性表。 操作集:长度为MaxSiz原创 2022-03-15 05:52:46 · 762 阅读 · 0 评论 -
【数据结构】java实现中缀表达式转后缀表达式计算器
01 后缀表达式介绍 后缀表达式 这种表示方式把运算符写在运算对象的后面,例如,把a+b写成ab+,所以也称为后缀式。这 02 中缀表达式转后缀表达式 中缀表达式转后缀表达式 初始化两个栈,运算符栈s1和中间结果栈s2 2.1 代码实现 因为String形式的算式不方便处理,首先将不带空格的中缀表达式添加到一个list里 // 将不带空格的中缀表达式转换成list public static List<String>...原创 2022-03-15 02:11:29 · 2090 阅读 · 0 评论 -
【数据结构】java栈实现简单计算器(中缀表达式)
使用栈完成计算一个表达式的结果:将中缀表达式转换成后缀表达式 1.通过索引遍历表达式 2.建立两个栈: 数栈和符号栈 3.扫描到数字直接入栈(运算数相对顺序不变) 4. 扫描到运算符: 符号栈为空,则压栈 符号栈不为空,扫描到的符号与符号栈栈顶元素进行比较,如果当前符号优先级大于栈中符号,则压栈 小于栈顶符号优先级,则从数栈中pop两个数,符号栈中pop一个符号进行计算,计算结果入数栈,扫描到当前符号继续比较,如果大于则入栈 ...原创 2022-03-14 23:27:52 · 1318 阅读 · 0 评论 -
【数据结构】堆栈的顺序存储实现和链表存储实现
目录 01 堆栈应用场景介绍 02 什么是堆栈(Stack) 2.1 堆栈的抽象数据类型描述 2.2 栈的思路分析和代码实现 2.2.1 数组实现栈 2.2.2 单向链表实现栈 01 堆栈应用场景介绍 02 什么是堆栈(Stack) 堆栈(Stack):具有一定操作约束的线性表 只在一端(栈顶,Top)做插入、删除 插入数据:入栈(Push) 删除数据:出栈(Pop) 后入先出:Last In First Out(LIFO) 2.1 堆栈的抽象数据类型描述 .原创 2022-03-14 01:36:53 · 1739 阅读 · 0 评论 -
【单链表】java实现单链表反转及逆序打印
单链表反转 // 单链表的反转 /* 1.定义一个节点 reverseHead 初始化为新的结点 2. 从头到尾遍历,每遍历一个就取出,放在新的链表的前端 3.遍历, 头插法 */ public static void reverse(Node head){ // 如果为空或只有一个节点, 无需反转 if(head.next == null || head.next.next == null){ .原创 2022-03-13 00:01:18 · 729 阅读 · 0 评论 -
【java数据结构】线性表(顺序表及链表)及其实现
01 引入: 多项式的表示 方法一:顺序结构直接表示(数组) 方法二:顺序存储结构存储非零项 方法三: 链表结构存储非零项 02 什么是线性表 线性表”:由同类型数据元素构成有序序列的线性结构 表中元素个数称为线性表的长度 线性表没有元素时,称为空表 表起始位置称为表头,表结束位置称表尾 说明:线性表也就是数组的一种特殊储存方式:从头到尾依次储存数据。 2.1 线性表抽象数据类型概述 线性表操作接口描述 public...原创 2022-03-12 23:57:55 · 1912 阅读 · 0 评论 -
java实现 Maximum Subsequence Sum (最大子列和难版)
Output Specification: For each test case, output in one line the largest sum, together with the first and the last numbers of the maximum subsequence. The numbers must be separated by one space, but there must be no extra space at the end of a line. In ca.原创 2022-03-11 20:18:59 · 462 阅读 · 0 评论 -
【实际应用】java实现最大子列和问题
目录 解法1 暴力法(比较所有子列和,取最大值)O(n^3) 解法2:O(n^2) 不再做重复的加法 解法3: 分而治之 解法4 在线处理 解法1 暴力法(比较所有子列和,取最大值)O(n^3) // 暴力求解,求出每个子列和,复杂度 三次方 public static int MaxSum(int arr[]){ // 求最大子列和, 先取子列并求和 int maxSum = 0; for(int i = 0; i &...原创 2022-03-09 04:54:17 · 449 阅读 · 0 评论 -
【数据结构】什么是算法(以选择排序为例)
目录 01 算法的定义 1.1 例:选择排序算法描述 02 什么是好的算法 2.1 算法效率分析 2.2 复杂度分析小窍门 01 算法的定义 算法(Algorithm) 一个有限指令集 接受一些输入(有些情况下不需要输入) 产生输出(一定产生输出) 一定在有限步骤之后终止 每一条指令必须 有充分明确的目标,不可以有歧义 计算机能处理的范围之内 描述应不依赖于任何一种计算机语言以及具体的实现手段 1.1 例:选择排序算法描述 首先在未排序序列中找到最小(大)元.原创 2022-03-09 00:43:52 · 141 阅读 · 0 评论 -
【数据结构】基本概念
目录 01 什么是数据结构 02 空间的使用(多项式计算举例分析) 03 算法效率 04 结论 01 什么是数据结构 “数据结构(data structure)是计算机中存储、组织数据的方式。通常情况下,精心选择的数据结构可以带来最优效率的算法 解决问题方法的效率,跟数据的组织方式有关 解决问题方法的效率,跟空间的利用效率有关 解决问题方法的效率,跟算法的巧妙程度有关 02 空间的使用(多项式计算举例分析) 写程序实现一个函数PrintN,使得传入一个正整数为N的参数后,能.原创 2022-03-08 23:41:36 · 346 阅读 · 0 评论
分享