Java数据结构与算法
LanceHang
这个作者很懒,什么都没留下…
展开
-
Java数据结构与算法——用栈完成一般的中缀表达式运算
题目:给出一个表达式字符串,例如:12+5*3-6 得到该字符串的结果。思路:先创建两个栈,一个符号栈,一个数字栈。利用指针对字符串进行扫描,如果是数字的话,判断他是否是该字符串表达式的最后一个字符,如果是,则直接入数字栈;如果不是,则继续扫描,当下一个字符还是数字时,把这两个字符连接在一起,如果是运算符,则入数字栈。如果是符号,则先判断符号栈是否为空,如果为空,则直接加入如果不为空,则比较当前运算符与栈内运算符的优先级大小如果当前运算符优先级大,则直接入栈如果当前优先级小于或等于栈内运算原创 2020-07-22 09:18:40 · 191 阅读 · 0 评论 -
java用数组来模拟栈------数据结构与算法
栈,又称为堆栈,它是一种特殊的线性表,它只能在栈顶进行操作。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。栈遵循先进后出的原则![在这里插入图片描述](https://img-blog.csdnimg.cn/20200711172957778.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,sh原创 2020-07-11 17:42:51 · 186 阅读 · 0 评论 -
约瑟夫问题(单向循环链表)---Java数据结构与算法
约瑟夫问题,有时也称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫环。又称“丢手绢问题”.假设有num个小孩在玩丢手绢,现在从第n个小孩开始数数,数到第m个数,把这个数删除,接着从这个被删除的数开始数m个,在删除,再数…例如:有五个孩子在玩丢手绢,从第二个小孩开始数,数2次,那么会得到一个出圈顺序:3-5-2-1-4解决约瑟夫问题,我们正好可以用环形链表相比于普通的单向链表,单向环形链表是把最后一个结点又指向了第一个结点。因此我们可以先构建一个结原创 2020-07-10 16:56:56 · 423 阅读 · 0 评论 -
Java数据结构与算法------双向链表
单链表的每个结点包含一个数据域和一个指向下一结点的指针域相对于单链表,双向链表多了一个指向前一个结点的指针创建结点class HeroNode2{ public int no;//英雄的编号 public String name;//英雄的名字 public String nickname;//英雄的昵称 public HeroNode2 next;//指向下一个结点 public HeroNode2 pre;//指向前一个结点 //构造器 public HeroNode2(int h原创 2020-07-07 19:04:32 · 141 阅读 · 0 评论 -
关于单链表的一些面试题--Java数据结构
获取单链表的有效结点的个数这个相对比较容易,定义一个计数器 i,一个辅助遍历的变量temp,对单链表进行遍历,当temp不等于null时,i++代码如下: //获取单链表的有效结点个数 (如果是带头结点的链表,不统计头结点) public static int getlength(HeroNode head) { if(head.next==null) { return 0; } int i=0; HeroNode temp = head.next;//定义辅助变量,没有统计原创 2020-07-06 17:18:33 · 124 阅读 · 0 评论 -
Java数据结构与算法------单链表
相比于数组与队列,链表是一个非连续、非顺序的存储结构。链表是以结点的方式来存储的(链式存储)每个结点都包含存储数据元素的数据域(data域),存储下一个结点地址的指针域(next域)链表的各个结点不一定是连续存储的链表分为带头结点的链表与没有头结点的链表,一般根据实际情况决定逻辑图如下:好了,单链表的大概结构已经了解,接下来是代码实现,这里我们以 插入梁山英雄好汉到单链表 为例:1.首先我们要创建结点我们需要定义一个类,包含英雄的编号,名字,昵称,以及指向下一个结点的nextc原创 2020-07-04 16:53:46 · 193 阅读 · 0 评论 -
Java数据结构与算法-----稀疏数组
在我们平常的应用中,稀疏数组是一种常用的数据结构。例如:在我们进行五子棋游戏时,如果中途有事需要离开,那么可以对他进行保存,以便事情结束后能接着继续玩。那么如何存储呢?首先我们会想到的是利用二维数组,我们可以把棋盘看成二维数组进行存储,但如果棋盘很大,而我们落子很少呢?那么存储整个棋盘就显得浪费空间了,因此,我们可以使用稀疏数组。那么什么是稀疏数组呢?稀疏数组也是二维数组,它是一种数据结构。假设棋盘现由n个子落下,那么稀疏数组是一个(n+1)*3的二维数组它的第一行第一列是棋盘的行数,第一行第二原创 2020-06-29 09:17:31 · 137 阅读 · 0 评论 -
数据结构与算法学习之路------线性结构
数据结构与算法学习之路------线性结构数据结构又分为线性结构和非线性结构,线性结构为最常用的数据结构。线性结构的特点是数据元素之间存在一对一的线性关系。线性结构又有两种不同的存储结构:顺序存储结构和链式存储结构顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的。例如:数组链式存储的线性表称为链表,链表中的存储元素不一定是连续的。元素结点中存放数据元素以及相邻元素的地址信息。例如:链表线性结构常见的有:数组、队列、链表和栈。...原创 2020-07-01 21:19:04 · 182 阅读 · 0 评论 -
Java数据结构与算法------队列
队列原创 2020-07-03 20:27:04 · 249 阅读 · 0 评论