自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构入门到入土——栈(Stack)和队列(Queue)

逆波兰表示法(Reverse Polish notation,RPN,或逆波兰记法),是一种是由波兰数学家扬·武卡谢维奇1920年引入的数学表达式形式,在逆波兰记法中,所有操作符置于操作数的后面,因此也被称为后缀表示法。逆波兰记法不需要括号来标识操作符的优先级。这是一个我们常见的表达式:9+(3-1)*3+8/2,这是一个中缀表达式,而我们要将它转换成一个不需要括号来识别优先级的后缀表达式,该怎么做?

2024-01-13 17:57:44 1278 2

原创 数据结构入门到入土——链表(完)LinkedList

双向链表由一系列的节点组成,每个节点包含两个指针,分别指向前一个节点和后一个节点。与单向链表不同,双向链表可以从任意节点开始,向前或向后遍历链表。如下图所示:这是一个无头双向链表,从中我们不难看出它与无头单向链表的区别:1.不仅有头节点通过next进行顺序访问,还有尾节点通过prev进行逆序访问2.额外有一个prev域访问上一个已访问过的节点LinkedList的官方文档。

2024-01-09 20:28:27 1687 4

原创 数据结构入门到入土——链表(2)

当慢指针刚进环时,可能就和快指针相遇了,最差情况下两个指针之间的距离刚好就是环的长度。此时,两个指针每移动一次,之间的距离就缩小一步,不会出现每次刚好是套圈的情况,因此:在慢指针走到一圈之前,快指针肯定是可以追上慢指针的,即相遇。通过以上过程我们推导出头节点距入口处(x)其实是等于快指针和慢指针相遇点到入口处的距离(y)的,所有我们大可在这里再次令slow等于head,让fast和slow以相同的速度往后走,因为速度一样,路程一样,所有它们再次相遇的地方就一定是这个环的入口点。下面是两个相交的链表。

2024-01-07 21:00:23 1242 1

原创 数据结构入门到入土——链表(1)

将head1.val与head2.val进行比较,较小令它等于tmpH且令它等于它的下一个节点,tmpH为newH的下一个节点。当fast==null或者fast.next === null时。然后令fast和slow一起走同样的步数,直到fast.next为null。要求倒数第k个节点,我们可以先定义fast和slow两个位于头节点的变量。当cur.val>=给定的值x时就让它进入链表2。当cur.val

2024-01-05 17:57:18 1286 1

原创 数据结构入门到入土——ArrayList与顺序表

【说明】是以泛型方式实现的,使用时必须要先实例化实现了接口,表明ArrayList支持随机访问实现了Cloneable接口,表明ArrayList是可以clone的实现了接口,表明ArrayList是支持序列化的5.和Vector不同,ArrayList不是线程安全的,在单线程下可以使用,在多线程中可以选择Vector或者CopyOnWriteArrayList底层是一段连续的空间,并且可以动态扩容,是一个动态类型的顺序表。

2023-12-29 22:51:14 1165 2

原创 数据结构入门到入土——List的介绍

List中提供了好的方法,具体如下:方法解释booleanadd(E e)尾插evoidadd将e插入到index位置booleanaddAll尾插c中的元素Eremove删除index位置元素booleanremove(Object o)删除遇到的第一个 oEget获取下标index位置元素Eset将index位置元素设置为elementvoidclear()清空booleancontains(Object o)判断o是否在线性表中intindexOf。

2023-12-27 20:49:34 616

原创 数据结构从入门到入土——初识泛型

一般的类和方法,只能使用具体的类型要么是基本类型,要么是自定义的类。如果要编写可以应用于多种类型的代码,这种刻板的限制对代码的束缚就会很大。-----来源《Java编程思想》对泛型的介绍。泛型是在JDK1.5就是适用于许多许多类型。从代码上讲,就是对类型实现了参数化。三,引出泛型实现一个类,类中包含一个数组成员,使得数组中可以存放任何类型的数据,也可以根据成员方法返回数组中某个下标的值?

2023-12-14 21:59:55 1209 1

原创 迈入数据结构殿堂——时间复杂度和空间复杂度

一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才能知道。这里我们可以类比高数中极限的思维,当N趋近于无穷大的时候,后面的常量10加不加好像对我们的时间效率并没有太大的影响,因为如今计算机的运行效率都是相当快的。空间复杂度不是程序占用了多少bytes的空间,因为这个也没太大意义,所以空间复杂度算的是变量的个数。拿到一串代码计算基本操作被执行多少次时,我们不可能去挨个数,一小串代码还好,可当我们面对一个项目的代码时,我们是不可能去挨个数出来的。得到的结果 是大O阶。

2023-12-13 11:08:02 1234 2

原创 学习数据结构第一步(必看)——初识集合框架

一提及数据结构我们就会想到算法,那数据结构和算法有何关系?其实这两个玩意是相辅相成的,一个好的算法离不开好的数据结构,而我们学数据结构的目的就是为了能够体现在算法上,能够更好的应用。面对数据结构这个词,我们很容易误以为它是什么比较高大上的玩意儿,其实不然,我们可以简单理解成数据 + 结构,主要用来描述和组织数据。比如说,我们有十万个用户信息,那这些信息我们如何去描述和组织起来?答案就是使用数据结构这个东西。例如:数组就是一种简单的数据结构(数组也是用于描述和组织一组数据)

2023-12-12 18:56:18 997 1

原创 你是否认识异常?这些Java当中的你是否都了解?

程序先执行 try 中的代码•如果 try 中的代码出现异常, 就会结束 try 中的代码, 看和 catch 中的异常类型是否匹配.•如果找到匹配的异常类型, 就会执行 catch 中的代码•如果没有找到匹配的异常类型, 就会将异常向上传递到上层调用者.•无论是否找到匹配的异常类型, fifinally 中的代码都会被执行到(在该方法结束之前执行).•如果上层调用者也没有处理的了异常, 就继续向上传递.•。

2023-12-10 10:14:28 954 1

原创 String类型详解(下),让你StringBuilder和StringBuffer不再迷路

双引号引起来的值就存放在字符串常量池当中。如果有,就不存储,直接返回字符串常量池的对象即可。(字符串常量池底层是一个哈希表,叫做StringTable,是用c/c++编写的)

2023-12-03 17:26:58 1019 2

原创 String类型详解(上),Java中String有多强大你真的了解吗?

在使用编程语言处理问题时往往会遇到与字符串相关的问题,当如果我们想定义一个字符串类型,这在C语言中其实是不存在的,得使用char*p来表示我们想要表达的字符串,但这其实是一个char*类型的指针。而在Java当中存在一个全新的数据类型——String类型:它可以直接定义我们想要表示的字符串。在IDEA上我们可以查看String的源码:(这里只截取了一部分)观察发现,这其实是一个类,而对类的学习,我们一定要从从它的构造方法开始学习。

2023-12-03 12:10:04 1109 3

原创 J.类和对象

面相对象程序设计关注的是对象,而对象是现实生活中的实体,比如:洗衣机。但是洗衣机计算机并不认识,需要开发人员告诉给计算机什么是洗衣机。上图左侧就是对洗衣机简单的描述,该过程称为对洗衣机对象实体进行抽象对一个复杂事物的重新认知,但是这些简化的抽象结果计算机也不能识别,开发人员可以采用某种面相对象的编程语言来进行描述,比如:Java语言。1.简单认识类类是用来对一个实体对象来进行描述的,主要描述该实体对象具有哪些属性外观尺寸等,哪些功能用来干啥,描述完成后计算机就可以识别了。

2023-11-21 23:09:41 301 2

原创 青蛙跳台阶问题与汉诺塔问题

这是我们画的台阶:青蛙每次只能往上跳一阶或者二阶由此我们能简单得到青蛙跳一阶有一种跳法。青蛙跳两阶有两种跳法。如果第一次跳一阶,那么还剩(n-1)阶:如果第一次跳两阶,那么还剩(n-2)阶:我们定义一个jump函数来表示青蛙跳n个台阶一共有多少种跳法;那么它跳n阶就有jump(n)种跳法假设第一次跳一阶,那么跳完后从第二层台阶往上跳就有jump(n-1)种跳法假设第一次跳两阶,那么跳完后从第三层台阶往上跳就有jump(n-2)种跳法。

2023-11-18 17:13:20 72 2

原创 操作符详解

即使有了操作符的优先级和结合性,我们写出的表达式依然有可能不能通过操作符的属性确定唯一的计算路径,那这个表达式就是存在潜在风险的,建议不要写出特别负责的表达式。完。

2023-11-18 13:39:32 329 2

原创 初识Java

注意:用户不能使用关键字定义标识符。在Java中关键字有很多,这里给大家列出来一部分,先了解下后序在逐一详细解释。

2023-11-14 22:19:30 381 7

原创 C语言——函数递归

在思考问题时要选择最合适的方式,有时候一个问题递归能够一下子想出来代码怎么编写,但计算量过大时,递归就略显无力了,这时候就得试着使用迭代来解决问题。故解决问题应选择最适合的方式。

2023-11-11 20:42:24 162 6

原创 VS编译器上的实用调试技巧

在电脑系统或程序中,隐藏着一些未被发现的缺陷或问题,简称程序漏洞,也就是我们现如今所说的bug。在我们发现程序存在漏洞(bug)时,我们便会想办法去去找到bug产生的原因,并消除问题,这个发现问题并修复问题的过程被称之为调试,也就是debug(消灭bug的意思)。

2023-11-11 00:17:43 322 6

原创 前端学习第一步

什么是前端?下面给大家展示一个常见的前端界面。我们经常都会使用京东,淘宝的购物交易平台买东西,而我们在平台当中浏览的一切,能看到的一切都被称为前端。我们日常生活中所接触到的大部分网络应用与网络页面都分为前端和后端,后端是我们日常访问所看不到的内容,类似与后台一台一台存放的服务器;前端则是我们能看到的用户界面;前端之所以能够展现在我们眼前,都归功于前端开发工程师的功劳,下面就让我们来初步认识一下前端吧。

2023-11-09 22:42:34 190 6

原创 C语言数组练习(2)——矩阵转置与有序序列合并

这道题如果我们使用数组来解决,我们首先会想到它坐标的变化,让我们来看看输入存放的数组是这个样子输出的数组变化成了这个样子由此我们统计出数组内元素下标的变化:在清楚变化规律后我们便可以尝试写代码了。

2023-11-07 22:33:32 112 2

原创 C语言实践——扫雷1(粗略版)

通过以下内容我们可以实现通过输入坐标而实现的扫雷游戏。

2023-11-07 07:58:39 53 1

原创 辗转相除法——求最大公约数

所谓辗转相除法,就是当要求a,b两个数的最大公约数时,如果c=a%b!=0时,我们便使用b%c来获得新的d,若此刻d=0,c便是a,b最大公约数,若不为0,便接着使用c%d获得新的余数,直到余数为0后,我们便得到了最大公约数;此问题虽然简单,但由于涉及到部分数学内容,却也十分烧脑,下面博主解决该问题将采用一种方法——辗转相除法。,这就是辗转相除法,为了更便于理解,我们用式子来表示以下。在明白了这点后,我们便可以试着使用代码来实现该功能了。

2023-11-06 21:59:45 126 2

原创 随机值的产生,猜数字游戏的实现

在学习完循环内容与函数内容后,我们便可以利用这些知识写上一个猜数字小游戏,再写之前,我们先来明白什么是猜数字游戏?1.电脑自动产生范围为1——100的一个随机数2.输入一个猜测数字,电脑根据输入数字与产生随机数进行大小比较,并给出猜测数字过大还是过小的提示3.玩家根据提示猜测下一个数字,电脑继续进行比较,直到玩家猜测出正确数字游戏结束。明白要求之后我们再次遇到问题——如何产生随机数?别急,让我们往下面介绍。

2023-11-04 02:03:54 315 3

原创 C语言——函数

C语言中,除了常用到的,我们还可以为了方便自己程序的书写而自己创造函数,也就是自定义函数,这也就为我们写代码带来了更多的创造性。数的语法形式函•ret_type是函数的返回类型•fun_name是自定义函数名•()中放的是形式参数•{}括起来的是函数体我们可以用一张图来简单体现函数在程序中的作用•ret_type是用来表示函数计算结果的类型,有时函数类型可以是void,表示什么都不用返回•fun_name是为了方便使用函数;

2023-11-03 16:03:56 158 2

原创 C语言循环练习——9*9乘法表,求十个整数中的最大值,计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值

1.首先分析题目,需要我们求1/1-1/2+1/3-1/4......+1/99-1/100的值,我们会觉得负号好像给这个题目增加了不少难度,所以我们偷偷将负号换成正号来进行思考,于是我们便只需要计算1/1+1/2+1/3+1/4......+1/99+1/100的值就可以了。3.最后我们来解决符号问题,观察题目,我们发现负号是有规律的出现在式子当中,总是在正号的下一位数出现,所以我们再次想到定义一个flag变量的值为1,计算是我们只需要用每个分母*flag,且在下一次的循环当中改变flag的符号就行了。

2023-11-02 21:42:01 74 2

原创 C语言数组练习(1)

编写代码,演示多个字符从两端向中间依次打印汇聚的场景但我们发现控制台上的输出结果却将前面的输出信息也都打印了出来,结果并不令人满意,如果我们想要在逐步打印完字符向中间移动的输出结果后只保留最后一条输出结果,我们可以加上Ststem函数来添加指令此时输出便变成了只在一行上输出,且输出完字符向中间聚拢的过程后会保留最终输出数据。

2023-10-31 15:21:48 98 2

原创 C语言中有关数组的概念

在学习完分支循环以后,我们紧接着会学习数组这一知识,这是一个较为重要的知识点,但究竟何为数组,数组都有哪些类别,数组的用处又有哪些地方,这将会是接下来本篇所探讨的内容。

2023-10-30 23:54:00 178

原创 C语言分支循环语句

C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构,C语⾔是能够实现这三种结构的,其实我们如果仔细分析,我们⽇常所⻅的事情都可以拆分为这三种结构或者这三种结构的组合。我们可以使⽤ifswitch实现分⽀结构,使⽤forwhiledo while实现循环结构。接下来我将从分支结构与循环结构以及分支循环的嵌套来介绍。

2023-10-25 16:19:21 198 1

原创 这是否是你们初学C语言也遇到过的问题?

这是我最近遇到的最大的问题,注释反应了一名程序员的基本素养,以及日后解读代码的快慢。也可能是现在敲的代码都太基础且简单,但以我之拙见,编写注释的习惯应从开始便逐步养成,才利于学习编程语言时发荣滋长,杆头日上。虽然这是c语言中最基础最简单的内容,但对于代码敲得少的初学者来说恰恰却是易错点,记得有次在vs外的编译器上编译时,这处错误足足让我找了20分钟。一道并不复杂且针对初学者的题目,看似毫无难度,却暗含了做题者对算术操作符的使用熟练度与数学思维,大脑长期处于不思考状态的人会十分头疼。古人云“学然后知不足。

2023-10-18 16:08:47 98

空空如也

空空如也

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

TA关注的人

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