自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 JDBC工具类

由于每次写JDBC连接数据库时都非常麻烦所以我们来编写一个JDBC的工具类。我们先了解一下普通的JDBC有什么步骤:1,加载驱动Class.forName("com.mysql.jdbc.Driver");2,获取连接Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc_test","root","root");3,预处理SQL语句 String sql

2022-02-11 20:32:57 688

原创 JDBC SQl注入

首先创建jdbc工具类public class DBUtils { //静态加载 static { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } /** * 获取连接 * *

2022-02-11 19:34:45 1013

原创 递归—八皇后问题

八皇后问题介绍:在一个棋盘上放置皇后,要求任意的两个皇后都不能处于同一行,同一列,和同一斜线上,问一共有多少种摆法;解题思路:1.第一个皇后放置在第一行第一列;2.第二个皇后放在第二行第一列判断是否符合条件,如果不符合就放在第二列,直到找到一个正确的位置;3.继续第三个皇后,还是第一列开始判断是否合理,依次找下去,直到八个皇后都找到了合理的位置,这就是一个正确的解,4.当找到一个正确的解时,在栈回退到上一个栈时,就会开始回溯,既将第一个皇后,放在第一行的所有解全部找出5.然后在将

2022-01-23 16:24:31 138

原创 递归解决迷宫问题

//先创建一个迷宫 //二维数组 int[][] map = new int[8][7]; //将数组的上下设为一 for (int i = 0; i < 7; i++) { map[0][i] = 1; map[7][i] = 1; } //将数组的左右设为一 for (int i = 0; i < 8; i++) { .

2022-01-23 15:10:04 329

原创 java递归

递归的概念:就是一个方法自己调自己,每次调用时传入不同的变量,递归有助于编程者解决复杂的问题,同时让代码变得简洁。我们举例两个实例: (打印问题)(阶层问题)通过打印问题,了解递归的原理public static void main(String[] args) { //通过打印问题来回顾递归的原理 test(4); } public static void test(int n){ if...

2022-01-04 22:40:02 139

原创 中缀表表达式转后缀表达式

在我们编程中,后缀表达式适合计算机进行运算,但是人却不容易写出来,尤其是表达式很长的情况下,因此在开发中,我们需要将中缀表达式转为后缀表达式。具体步骤1.初始化两个栈:运算符栈s1和储存中间结果的栈s22.从左到右扫描中缀表达式3.遇到数时压入s24.遇到运算符时,比较其与s1栈顶运算符的优先级;(1)如果s1为空,或栈顶运算符为左括号(,则直接将此运算符入栈(2 )否则,若优先级比栈顶的运算符高,也将运算符压入s1...

2022-01-03 23:20:28 166

原创 使用栈完成逆波兰计算器

要求:1.输入一个逆波兰表达式【后缀表达式】,使用栈(stack)完成计算其结果。2.支持小括号和多位数。代码实现 public static void main(String[] args) { //先定义一个逆波兰表达式 //3 4 + 5 * 6 - //为了方便,逆波兰表达式的数字和符号用空格隔开 String suffixExpression = "3 4 + 5 * 6 - "; //思路

2022-01-03 18:45:36 135

原创 java栈实现计算器

使用完成一个表达式的计算实现思路:先创建两个栈,一个数字栈(numstack),一个字符栈(operstack)1.通过一个index值(索引),来遍历表达式,2.如果我们发现的是一个数字就直接放入数字栈中。3.如果发现的是一个运算符:3.1.如果栈中为空就直接入栈。3.2.如果符号栈中有运算符,就进行比较,如果当前的运算符优先级小于或等于栈中的运算符,就需要从数字栈中pop两个数字,再从字符栈中pop出一个字符,进行运算,将得到的结果,入数...

2022-01-03 00:40:49 286 1

原创 java栈的初体验(stack)

栈的介绍: 1.栈的英文为(stack)2.栈是一个先入后出的有序列表(出栈pop 入栈push) 3.栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(top),另一端为固定的一端,称为栈底(Bottom)。 4.根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除。...

2021-12-27 23:35:24 146

原创 java单项环形链表

Josephu(约瑟夫环,约瑟夫)问题 在学习环形链表之前我们先了解一下约瑟夫问题,设编号为1,2,3……n。的n个人围坐一圈约定编号为k(1<=k<=n)的人从1开始报数,当数到m的那个人出列,后一个人在从1开始报数,以此类推直到最后移入出列。由此产生一个出列编号顺序。提示:用一个不带头结点的循环链表来处理约瑟夫问题,先构成一个有n个节点的单循环链表,然后由k从1开始计数,到m时,对应的节点从链表中移除,然后被删除的节点的后一位又从1开始报数,直到最后一个节点。 ...

2021-12-26 22:50:55 430

原创 java双向链表

单向链表和双向链表的区别 1.单向链表查找的方向只能是一个方向,而双向链表可以从前或从后查找。 2.单项链表不能自我删除,需要靠辅助节点,而双向链表,则可以自我删除。(所以前面单项链表总是要定义一个辅助节点temp)图例:双向链表的实现: 一:定义一个HeroNode,每个HeroNode对象就是一个节点(比单项链表多了一个pre)class HeroNode2 { public int no; public Stri...

2021-12-26 21:22:33 306

原创 java单向链表按顺序插入节点

实现步骤: 1.首先找到新添加的节点的位置,是通过辅助变量(指针),通过遍历来实现。 2.新的节点 next = temp.next。 3.将temp.next = 新的节点。 package com.linkedlist;public class demo01 { public static void main(String[] args) { //测试 //...

2021-12-24 00:09:12 1254

原创 java链表(Linked Li)介绍

链表是有序列表小结:1:链表是以节点的方式来储存,是链式结构2:每个节点包含data域,next域:指向下一个节点3:链表的各个节点不一定是连续存放4:链表分为带头结点的链表和没有头结点的链表,根据实际的需求来确定链表的独特链表主要是便于管理长度或数量不确定的数据,相对于数组,链表处理这种数据时比较节省内存。动态语言通常不大需要链表,因为动态语言的解释器帮你管理内存,但当你对空间效率或插入动作的效率有特殊要求时也可在动态语言中使用链表。链表介绍:链表在内...

2021-12-20 22:52:30 464

原创 java数组模拟循环队列

对前面的数组模拟队列的优化,充分利用数组,因此将数组看成一个环形。(通过取模的方式来实现)分析说明:1.尾索引的下一个为头索引时表示队列满了,既将队列容量空出一个作为约定,这个在做判定队列满的时候需要注意((rear+1)%maxSize == front )【为满】2.rear == front 【为空】思路如下:1:front变量做一个调整:front就指向队列的第一个元素,也就是说arr[front]就是队列的第一个数。 front的初始值为 front = 0....

2021-12-19 23:27:59 508

原创 java一次性队列

队列介绍1:队列是一个有序列表,可以用数组或是链表来实现。2:遵循先入先出的原则,既:先存入队列的数据,要先取出,后存入的要后取出。3:示意图:使用数组模拟队列示意图:数组模拟队列:1:队列本身就是有序列表,如果使用数组的结构来储存队列的数据,则队列数组的声明如下图,其中maxsize是该队列的最大容量。2:因为队列的输出,输入是分别从前向后来处理的,因此需要定义两个变量front和rear分别纪录队列前后端的下标,front会随着数据输出而改变,而rear则是随着数据的输入而改变。

2021-12-18 23:30:12 678

翻译 java稀疏数组

稀疏数组的介绍:当一个数组中大部分的数据都为0或同一个值时我们可以使用细数数组来保存这个数组; 就好比我们的棋盘,他可以看成为一个二维数组,但这给棋盘上有的大部分的位置是没有棋子的。将他转为二维数组来储存时就有点浪费了,我们可以按照稀疏数组来储存棋盘上的数据。 稀疏数组的处理方式:1.纪录数组一个有多少行多少列多少个值。2.把具有不同值的元素纪录在小规模的数组中,从而缩小程序的规模。 ...

2021-12-18 20:23:25 74

原创 面向对象自我总结

面向对象的三大特征:封装 继承 多态--------------------------封装方法public int getage(){ return this.age;}public void setage(int i){ this.age=i; }-------------------------访问修饰符public :公开protectad :受保护的default : 默认的(缺省)private : 私有的-------------...

2021-09-13 08:27:23 63

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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