数据结构和算法
数据结构和算法
掌心一点微笑
软件开发工程师,java,python
展开
-
数据结构+算法连载十 栈实现综合计算器
使用栈完成计算 一个表达式的结果输入一个字符串 为 "3+2*6-2" 结果= ?思路如下:使用栈完成表达式的计算 思路首先,创建两个栈,一个数字栈,一个符号栈。1. 通过一个 index 值(索引),来遍历我们的表达式2. 如果我们发现是一个数字, 就直接入数栈3. 如果发现扫描到是一个符号, 就分如下情况3.1 如果发现当前的符号栈为 空,就...原创 2019-11-12 22:56:29 · 874 阅读 · 0 评论 -
数据结构+算法连载九 栈
栈的介绍:栈的英文为(stack) 栈是一个先入后出(FILO-First In Last Out)的有序列表。 栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。 根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,...原创 2019-11-12 22:48:44 · 396 阅读 · 2 评论 -
数据结构+算法连载八 单向环形链表和约瑟夫问题(Josephu)
先来看看单向环形链表,顾名思义就是 单向链表,构成环状,结尾的节点的next域指向头结点。其实这个和约瑟夫问题很类似,约瑟夫就是个环形链表,然后出圈的问题。Josephu 问题为:设编号为1,2,… n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止...原创 2019-11-12 21:20:56 · 902 阅读 · 0 评论 -
数据结构+算法连载七 有序-双向链表
上一篇记录了无序 双向链表,其实逻辑是一样的数据结构+算法连载六 无序-双向链表有序链表操作如下:新增:要是插入在中间的话,需要把前面和后面的两个节点都串起来。 修改:同无序。 删除:同无序所以,有序和无序的差距,仅仅是在 add方法上 不一致。代码如下public class DoubleLinkedListDemo { public static void main...原创 2019-11-10 15:14:54 · 1003 阅读 · 0 评论 -
数据结构+算法连载六 无序-双向链表
单向链表,查找的方向只能是一个方向,而双向链 表可以向前或者向后查找。 单向链表不能自我删除,需要靠辅助节点 ,而双向 链表,则可以自我删除,所以前面我们单链表删除 时节点,总是找到temp,temp是待删除节点的前一 个节点,这次双向链表 temp就直接是待删除的节点。单向链表的链接如下:数据结构+算法连载四 单向链表(无序+有序)数据结构+算法连载五 单向链表的几道练习题...原创 2019-11-10 14:53:19 · 1317 阅读 · 0 评论 -
数据结构+算法连载五 单向链表的几道练习题
记录一下 单链表的几个操作习题。直接上代码吧 求单链表中有效节点的个数 //方法:获取到单链表的节点的个数(如果是带头结点的链表,需求不统计头节点) /** * * @param head 链表的头节点 * @return 返回的就是有效节点的个数 */ public static int getLength(HeroNode head) { i...原创 2019-11-10 13:44:11 · 580 阅读 · 0 评论 -
数据结构+算法连载四 单向链表(无序+有序)
链表是有序的列表,但是它在内存中是存储如下小结:链表是以节点的方式来存储,是链式存储 每个节点包含 data 域, next 域:指向下一个节点. 如图:发现链表的各个节点不一定是连续存储. 链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定 单链表的应用实例 使用带head头的单向链表实现需求如下:–水浒英雄排行榜管理,完成对英雄人物的增删改查操作...原创 2019-11-09 22:25:27 · 1199 阅读 · 0 评论 -
数据结构+算法连载三 数组模拟环形队列
数组模拟环形队列对上一篇的数组模拟队列的优化,充分利用数组. 因此将数组看做是一个环形的。(通过取模的方 式来实现即可)上一篇的链接如下:上一篇-- 数据结构+算法连载二 队列分析说明: 尾索引的下一个为头索引时表示队列满,即将队 列容量空出一个作为约定,这个在做判断队列满的 时候需要注意1. 判断队列满 (rear + 1) % maxSize == front [满...原创 2019-11-09 21:15:06 · 377 阅读 · 0 评论 -
数据结构+算法连载二 队列
队列介绍队列是一个有序列表,可以用数组或是链表来实现。遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出示意图:(使用数组模拟队列示意图)数组模拟队列当我们将数据存入队列时称为”addQueue”,addQueue 的处理需要有两个步骤:思路分析1.将尾指针往后移:rear+1 , 当front == rear 【空】2.若尾指针 rear ...原创 2019-11-09 18:45:33 · 776 阅读 · 0 评论 -
数据结构+算法连载一 稀疏数组的原始的二维数组互相转换
先看一个实际的需求因为该图片记录了很多没用的值,都是0,所以用稀疏数组来实现优化。应用实例:接下来就是 代码的实现public class SparseArray { public static void main(String[] args) { // 创建一个原始的二维数组 11 * 11 // 0: 表示没有棋子, 1 表示 黑子 2 ...原创 2019-11-09 18:02:54 · 408 阅读 · 0 评论