数据结构与算法
不止码农~~~~
(本人很懒~~~没有留下什么。。。)不做搬运工。。
展开
-
数组模拟环形队列案例和思路
思路如下:**1. front:**front就指向队列的第一个元素,也就是说arr[front]就是队列的第一个元素。front的初始值为0.**2.rear:**rear指向队列的最后一个元素的后一个位置,因为希望空出一个空间作为约定。rear的初始值为03.当队列满时,条件是**(rear+1)%maxSize=front【满】。**4.当队列为空的条件时,rear==front【空...原创 2019-08-09 11:47:56 · 584 阅读 · 1 评论 -
前缀、中缀、后缀表达式(逆波兰表达式)、逆波兰计算的实现。
前缀表达式的计算机求值:eg:- × + 3 4 5 6从右至左扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算(栈顶元素和次顶元素),并将结果入栈;重复上述过程直到表达式最左端,最后运算得出的值即为表达式的结果。中缀表达式:就是我们最常见的表达式:(3+4)×5-6后缀表达式:又称逆波兰表达式与前缀表达式相似,只是运算符位于操作符之后。3...原创 2019-08-16 17:35:23 · 184 阅读 · 0 评论 -
栈实现综合计算器
思路通过一个index值(索引),来遍历我们的表达式。如果我们发现是一个数字,就直接入数栈。如果发现扫描到的是一个符号,就分如下几种情况:(1).如果我们发现当前符号栈为空,就直接入符号栈。(2).如果符号栈有操作符,就进行比较**,如果当前的操作符的优先级小于或等于栈中的操作符,就需要从数栈中pop出两个数**,再从符号栈中pop出一个符号,进行运算,将得到结果,入数栈,...原创 2019-08-16 15:42:22 · 171 阅读 · 0 评论 -
栈的介绍和应用场景、用数组实现一个栈
介绍栈(stack):是一个** 先入后出**(FlLO-First ln Last Out)的有序列表。栈是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶,另一端为固定的一端,称为栈底根据栈的定义可知,最先放入栈中的元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除。...原创 2019-08-14 14:46:39 · 238 阅读 · 0 评论 -
约瑟夫(环形链表)问题实现、小孩出圈问题
构建一个单向的环形链表思路操作环形链表思路:构建环形链表(1).先创建第一个节点。让first指向该节点,并形成环形**(first.next=first)。**(2).后面当我们每创建一个新节点,就把该节点,加入到已有的环形链表中即可。遍历环形链表(1).先让一个辅助指针(变量)curBoy,指向first节点(2).然后通过一个while循环遍历该环形链表即可curBoy...原创 2019-08-14 11:30:39 · 258 阅读 · 0 评论 -
数组模拟队列的实现
队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下图,其中maxSize是该队列的最大容量。因为队列的输出、输入是分别从前后段来处理,因此需要两个变量front及rear分别记录队列前后端的下标,front会随着数据输出而改变,而rear则是随着数据输入而改变,如图所示:...原创 2019-08-07 14:27:19 · 209 阅读 · 0 评论 -
链表,单向链表的创建,插入,更新,删除操作
总结:链表是以节点的方式来存储,是链式存储。每个节点包含data域,next域:指向下一个节点链表的各个节点不一定是连续存储。链表分类:带头节点的链表和没有头结点的。根据实际的需求来确定。单链表(带头结点)逻辑结构示意图:添加(创建)1.先创建一个head头结点,作用就是表示单链表的头。2.后面我们每添加一个节点,就直接加入到链表的最后public class Singl...原创 2019-08-09 15:26:59 · 433 阅读 · 0 评论 -
数组实现双向链表、双向链表的操作
分析:思路:遍历:和单链表一样,只是可以向前,也可以向后查找。添加(默认添加到双向链表的最后)(1).先找到双向链表的最后这个节点(temp)(2).temp.next = newHeroNode(3).newHeroNode.pre = temp;修改思路和单链表一样删除(1).以为是双向链表,因此,我们可以实现自我删除某个节点(2).直接找到要删除的这个节点,比...原创 2019-08-13 23:23:59 · 1810 阅读 · 0 评论 -
稀疏数组的简介,数组和稀疏数组的装换的实现代码
基本介绍:当一个数组中大部分元素为0,或者为同一个值的数组是,可以使用稀疏数组来保存该数组。稀疏数组的处理方法是:1. 记录数组一共有几行几列,有多少个不同的值。2. 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模。如图所示:将一个数组转换为习稀疏数组。数组和稀疏数组的互相转换二维数组转稀疏数组的思路:1.遍历原始的二维数组,得到有效数据的个数sum。...原创 2019-08-07 11:27:11 · 143 阅读 · 0 评论 -
二叉树前,中,后序遍历的实现
思路分析:前序遍历:先输出父节点,再遍历左子树和右子树。中序遍历:先遍历左子树,再输出父节点,再遍历右子树。后序遍历:先遍历左子树,再遍历右子树,最后输出父节点。小结:看输出父节点的顺序,就确定是前序,中序还是后序。//先创建HeroNode节点class HeroNode { private int no; private String name; pri...原创 2019-08-22 09:43:08 · 707 阅读 · 0 评论