数据结构与算法
weixin_45508650
这个作者很懒,什么都没留下…
展开
-
Java-数据结构与算法--栈实现综合计算器
栈实现综合计算器(中缀表达式)思路分析:需要两个栈:数栈和符号栈 定义一个index索引来遍历表达式遍历到一个数字,则入数栈 遍历到一个符号,若符号栈为空则入符号栈;若符号栈不为空:如果当前遍历到的符号优先级小于或等于符号栈中符号的优先级,则从数栈中pop出两个数,从符号栈中pop出一个符号,进行运算,然后将运算结果入数栈,将当前遍历到的符号入符号栈;如果当前遍历到的符号优先级大于符号栈中符号优先级,则将该符号直接入符号栈。表达式遍历完毕后,则按顺序从数栈和符号栈中pop出值进行运算最后数栈原创 2020-08-15 10:41:24 · 220 阅读 · 0 评论 -
Java-数据结构与算法--约瑟夫问题(用单向环形链表实现)
Josephu 问题Josephu 问题为:设编号为 1,2,… n 的 n 个人围坐一圈,约定编号为 k(1<=k<=n)的人从 1 开始报数,数到 m 的那个人出列,它的下一位又从 1 开始报数,数到 m 的那个人又出列,依次类推,直到所有人出列为止,由此 产生一个出队编号的序列。//创建Boy类 代表一个节点 class Boy { private int no; private Boy next;//指向下一个节点 默认null public Bo原创 2020-08-14 23:12:20 · 115 阅读 · 0 评论 -
Java-数据结构与算法--双向链表
双向链表的操作分析和实现使用带 head 头的双向链表实现管理单向链表的缺点分析:单向链表,查找的方向只能是一个方向,而双向链表可以向前或者向后查找。单向链表不能自我删除,需要靠辅助节点,而双向链表,则可以自我删除,所以前面单链表删除结点时,总是找到 temp,temp 是待删除节点的前一个节点分析了双向链表如何完成遍历,添加,修改和删除的思路对上图的说明:1、分析 双向链表的遍历,添加,修改,删除的操作思路2、遍历 方和 单链表一样,只是可以向前,也可以向后查找3、添加 (默认添加到原创 2020-08-14 23:02:25 · 93 阅读 · 0 评论 -
Java-数据结构与算法--单链表面试题(新浪,百度,腾讯)
注:本文结合[单链表增删改查]使用 (点击前往)单链表常见面试题如下:1.求单链表中有效节点的个数2.查找单链表中的倒数第K个节点(新浪面试题)3.单链表的反转(腾讯面试题)4.从尾到头打印单链表(百度要求1,反转遍历 2,Stack栈)5,合并两个有序的单链表,合并之后的链表依然有序1.求单链表中有效节点的个数//方法:获取单链表的节点个数(如果是带头节点的链表,需求不统计头节点) //head链表的头节点 //return 返回的就是有效节点的个数 public原创 2020-08-14 20:58:37 · 125 阅读 · 0 评论 -
Java-数据结构与算法--单链表增删改查
单链表原创 2020-08-14 18:04:53 · 138 阅读 · 0 评论 -
Java-数据结构与算法--数组模拟环形队列实现
数组模拟环形队列实现思路:为什么要使得rear指向队尾元素的后一个位置,看下面例子:代码实现:import java.util.Scanner;class CircleArrayQueue { private int maxSize;//队列最大容量 private int front;//front指向队列的第一个元素,即arr[front]为队列的第一个元素 front=0;这里默认为0 private int rear;//指向队列的最后一个元素的后一个位置,原创 2020-08-14 15:16:51 · 115 阅读 · 0 评论 -
数据结构与算法-----二维数组转稀疏数组并存入文件--Java实现
二维数组转稀疏数组的思路:1、遍历原始的二维数组chessArr1,得到有效数据的个数sum2、根据sum就可以创建稀疏数组sparseArr int[sum+1][3]3、将原始二维数组的有效数据存入稀疏数组稀疏数组转原始二维数组的思路:1、读取稀疏数组的第一行,根据第一行的数据创建原始二维数组chessArr2=int[11][11]2、读取稀疏数组的后几行的数据,并赋值给chessArr2即可稀疏数组存入文件:1、创建文件2、写入数据 File file = new原创 2020-08-13 14:42:51 · 149 阅读 · 0 评论 -
KMP 算法最佳应用-字符串匹配问题
字符串匹配问题:有一个字符串str1=“BBCABCDABABCDABCDABDE”,和一个子串str2=“ABCDABD”现在要判断 str1 是否含有 str2, 如果存在,就返回第一次出现的位置, 如果没有,则返回-1要求:使用KMP算法完成判断,不能使用简单的暴力匹配算法.思路分析图解举例来说,有一个字符串 Str1 = “BBC ABCDAB ABCDABCDABDE”,判断,里面是否包含另一个字符串 Str2 = “ABCDABD”?1.首先,用 Str1 的第一个字符和 Str2原创 2020-08-13 00:10:38 · 194 阅读 · 0 评论