笔记
unique¢
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
中缀表达式转换为后缀表达式实现基本计算机功能
前缀、中缀、后缀表达式(逆波兰表达式)举例说明 运算表达式:(3+4)*5-6 前缀表达式:- * + 3 4 5 6(从右向左扫描) 中缀表达式:(3+4)*5-6 (我们人常见的运算表达式) 后缀表达式:3 4 + 5 * 6 -(从左向右扫描,与前缀表达式相反) 中缀表达式转为后缀表达式的思路 1)初始化两个栈:运算符栈s1和储存中间结果的栈s2 2)从左到右扫描中缀表达式 3)遇到数字时,将其压入s2 4)遇到运算符时,比较其与s1栈顶运算符的优先级 1.如果s1为空,或原创 2021-01-29 17:59:40 · 570 阅读 · 2 评论 -
Java实现单向环形链表
单向环形链表介绍 单向环形链表就是在单向链表(没有头节点)的基础上,让链表的最后一个节点的next指向该链表的第一个节点。如下图所示 用单向环形链表解决约瑟夫问题 1)1.约瑟夫问题 设编号为1,2,···n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依此类推,直到所有人出列为止,由此产生一个出队编号的序列。 2.提示 先构成一个有n个节点的环形链表,然后由k节点起从1开始计数,计到m时,对应的节点从链表原创 2021-01-28 17:26:34 · 360 阅读 · 2 评论 -
java实现双向链表的基本功能
单向链表的缺点 1)单向链表,查找的方向只能是一个方向,而双向链表可以向前或向后查找 2)单向链表不能自我删除,需要借助辅助变量,而双向链表可以自我删除 双向链表的增删改、遍历的操作思路 1)添加节点(默认添加到双向链表的最后) 1.先找到双向链表的最后节点 2.temp.next=newHero(temp为辅助节点) 3.newHero.pre=temp 2)删除节点 1.直接找到要删除的这个节点,比如temp 2.temp.pre.next=temp.next 3.temp.next.pre=temp.原创 2021-01-23 01:04:58 · 238 阅读 · 1 评论 -
Java编写单向链表
链表(Linked List)介绍 1)链表是以节点的方式来存储数据,是链式存储。 2)每个节点包含data域及next域。next域:指向下一个节点。 3)链表的各个节点不一定是连续存储的。 4)链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定。 单链表实现增删改查的思路(用水浒传英雄排行耪来说明) 1)添加数据 第一种方法:数据直接添加到链表的尾部; 思路 该链表为空链表时: 1.先创建一个head头节点(不存放具体的数据),作用是表示单链表的头(head.next)。 2.后面每添加一个节原创 2021-01-22 17:36:15 · 238 阅读 · 0 评论 -
队列
#队列 1.队列介绍 1)队列是一个有序列表,可以用数组或是链表实现。 2)遵循先进先出原则。即:先存入列表的数据,先取出。后存入的后取出 2.数组模拟循环队列思路 1)队列的输出、输入时分别从前后两端来处理,因此需要两个变量front(队头)及rear(队尾)来实现输入及输出。 2)front初始值=0;front指向队列的第一个元素。 3)rear的初始值=0;rear指向队列的最后一个元素的后一个位置。因此队列的最大容量比数组的长度少1。 4)队列满的条件为...原创 2021-01-21 14:25:02 · 125 阅读 · 0 评论 -
稀疏数组与二维数组的转换
#稀疏数组的应用 1.基本介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 2.处理方法 1)记录数组一共有几行几列,有多少个不同的值 2)把具有不同值的元素的行列及值记录在稀疏数组中,从而减少内存损耗。 3.思路 二维数组转成稀疏数组 1.遍历 原始的二维数组,得到有效数据的个数sum 2.根据sum就可以创建 稀疏数组 sparseArr int[sum+1][3] 3.将二维数组的有效数据存入到 稀疏数组 稀疏数组转原始的二维数...原创 2021-01-20 23:50:05 · 161 阅读 · 3 评论
分享