自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)

原创 JAVA用栈计算后缀表达式(详解)

在上一篇我们已经说过如何计算中缀表达式了,那么这一篇就来说一下如何来计算后缀表达式的值。后缀表达式呢,要比中缀表达式的计算要容易得多。和上一次一样,我们先来分析一下过程应该是什么样子呢?我这里有一个后缀表达式,一个栈,还有分析过程,我们就拿这个表达式来做一下演示。我们从左到右扫描,34都是数字直接入栈。然后遇到运算符+,我们弹出栈的两个数并运算,结果入栈。然后下一个是5,直接入栈。再下个是*,依旧弹出两个数,进行运算。结果入栈然后下个是6,我们直接入栈。然后是 - ,我们依旧弹出

2020-09-30 11:53:51 26

原创 JAVA用栈计算中缀表达式(详解)

那,在上一篇呢,已经写好了如何去实现一个栈了。在最开始我就说过,栈的实现很简单,但用栈来解决一些实际问题,可能会有点难度。今天这一篇就是用栈这个数据结构,来解决中缀表达式的计算。也就是数学表达式的计算。题目也很简单:假如有个字符串表达式(“5+2*5-4/1”),用栈来计算这个表达式的值。OKK,现在我们来分析一下怎么来做。然后再用代码实现。那,这是我整理好的思路,似乎第一眼看到后,很懵逼。没有关系,我们用一个例子来分析一下,瞬间就会明了。就用上面我提到过的表达式(5+2*5-4/1)。

2020-09-27 16:17:13 30

原创 JAVA用数组实现栈(详解)

关于栈是什么,这里是真的不多说了,不管学什么语言,只要涉及到数据结构,一定在开始就有栈这个概念。而我们所熟知的也就是先进后出。但也是这个先进后出最能体现出栈的特点。总得来说呢,栈的实现并不难,但是很多算法和功能实现都需要用到栈,所以栈这个数据结构也变得至关重要,所以这一篇,我们就说一下怎么用数组实现一个栈。我们先从原理下手, 想一想一个栈我应该怎么实现出来?看图,如果我有一个数组arr为空,并且有一个变量top,让他初始值为-1;每次添加元素,我们就让top++,并且把值给arr[ top ],

2020-09-24 22:33:25 14

原创 JAVA用环形链表解决约瑟夫问题(详解)

那如果想解决约瑟夫问题,那我们就再来回顾一下约瑟夫问题:约瑟夫问题是个有名的问题:N个人围成一圈,从某一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。那这句话的意思是什么呢,要怎么理解呢?我们用图来看一下:看一看到五个圆围成了一个圈,每个圆有自己的编号。假设我们从1号开始报数,每次报数后的第二个会被杀掉。那么第一个出局的应该是2号。这个时候再从第三个开始报数,然后第4号淘汰。然后再从第四号开始报数,以此类推。。。。最后确定出一个淘汰的顺序。OK。原理我们已经知道了,那

2020-09-23 14:46:12 21

原创 JAVA实现环形链表(详解)

关于单链表和双向链表,在之前的LinkedList源码里我已经写过一次了。。。所以这次关于链表的分析就只剩环形链表了而这一篇,主要是讲解原理以及代码实现,不涉及到解决问题。所以接下来的重点主要在于如何用代码来实现出一个环形链表。所谓环形链表也就是在单链表的基础上,让最后一个节点的next指向第一个节点,所以说这次我们就不能设置头节点了(不然最后一个节点会指向一个没用的节点)。。那我们就开始写第一步,也就是最开始的一步,创建一个节点类。public class Node { private

2020-09-22 22:50:10 57

原创 JAVA数组实现环形队列(下篇)

关于上一篇文章,测试了代码发现所实现的队列只能使用一次。、是一个问题很大的数据结构。所以为了能够让队列变得优化,对上一篇的代码进行了修改。关于上一篇队列的实现,只能使用一次的原因也说过了。这里再简单说一下:如果我们在队列里面添加满元素后:rear指向最后一个数组元素的位置。这个时候队列满了。然后我们再出队出队一直出。即便最后一个元素也出队了,但是里面的元素并没有删除,只是front++到了rear的位置,因为二者相等,所以起到了一个队列为空的效果。但也正是因为这样。我们这个队列才只能

2020-09-12 21:24:41 11

原创 JAVA数组实现队列(上篇)

这一篇,说一下怎么用JAVA实现一个队列,那我们就要知道什么是队列,队列是一种比较简单的数据结构,我们来看一下队列的定义:队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。也就是我们经常所说的**“先进先出”**。那如果我们用数组实现一个队列,我所学过的语言实现的方法似乎都大致一样。首先我们创建一个数组是一定的,大小可以由用户来确定。然

2020-09-11 15:59:38 14

原创 JAVA中的二维数组和稀疏数组之间的转换

由于是开学季,也确实是好久没有更新博客了,主要也是因为自己一直在学新东西,之前的没啥好分享的了。今天开始主要就是更新JAVA中的数据结构,第一篇就是关于稀疏数组的转换问题。说到稀疏数组,首先要知道稀疏数组是什么?我在网上找到了一张图。我们来看左边,是一个正常的二维数组,但是这个二维数组的大部分元素都是0.似乎有些浪费空间,我们有没有一种方法能够简化这种二维数组。这个时候稀疏数组出现了,让我们看一下右边的数组。我们记住,稀疏数组的列数一定是3,分别代表行列值。而且稀疏数组的第一行数据代表的是

2020-09-09 11:59:35 27

空空如也

空空如也

空空如也
提示
确定要删除当前文章?
取消 删除