自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 几种排序算法的C/C++实现

几种常用排序算法总结及代码实现注:本文排序算法的代码实现全部采取从小到大的方式进行排序1. 冒泡排序冒泡排序(Bubble Sort)就是一种交换排序,它的思想就是两个元素进行比较,如果是反序则交换,直到没有反序的元素为止。排序图示代码实现#include <stdio.h>//两个数进行交换的函数void Swap(int *num1, int *num2){ int temp = *num1; *num1 = *num2; *num2 = te

2020-07-22 09:45:17 4853 3

原创 C++ Conversion Function(转换函数) and Explicit Keyword

转换函数的目的就是将一个类的对象转换为另一种类型,比如说在数学的角度,一个分数可以转换为一个小数;那么从程序的角度来说,一个分数类(Fraction)的对象也可以转换为浮点数(double),此时就需要用到Conversion Fraction.Fraction类的代码如下:上述程序的说明:其中的就是转换函数,将Fraction对象转换为double,例如:如果没有在类中定义转换函数,那么上述代码会报错,在定义了转换函数之后,会转换为类型的和相加等到4.6后赋值给变量.上面我们探讨了转换为,其实

2022-06-17 17:00:15 366 1

原创 详谈C++函数参数传递

首先我们要知道的是每次函数调用时都会重新创建它的形参,并用传入的实参对形参进行初始化:上面的函数有两个形参和,在函数的中被初始化为, 被初始化为;在函数的中被初始化为, 被初始化为。当函数形参的传递方式为Pass By Value时,初始值被拷贝给变量,此时对形参的改动不会影响实参:上面的程序在函数中更改的值不会影响的值。当函数形参的传递方式为Pass By Reference时 ,对形参的更改会影响实参:拷贝很大的对象时性能可能会很低,甚至某些类型(包括IO类型在内)根本不支持拷贝操作,对于不支持

2022-06-16 15:05:14 613

原创 C++中的const限定符

有时我们希望定义一个变量之后,这个变量的值就不能进行更改,我们往往也会称其为“常量”,在C语言中,我们往往采用进行宏定义,例如:在C++中,我们可以使用对变量进行修饰:这样,任何对变量进行重新赋值的行为都不被允许,哪怕是重新赋的值和原来的值相同也不允许!将常量的值赋给变量也是合法的:0x02 const的引用我们可以将引用绑定到普通变量上,那么也可以将引用绑定到对象,即常量上,const的引用也就是我们常说的“常量引用”。这样我们不能通过引用修改Size的值,因为Size是一个const对象,

2022-06-15 16:38:30 278

原创 异或(^)运算

异或(^)运算我们对异或运算都很熟悉,运算的法则是,两个数进行异或,相同为0, 相异为1;即1 ^ 1 = 0;0 ^ 0 = 0;0 ^ 1 = 1;1 ^ 0 = 1;我们也可以将疑惑运算理解为“无进位相加”,异或运算还具有以下性质0和任意数进行异或,得到的结构还是这个数,即0 ^ N = N异或运算满足交换律和结合律:交换律:a ^ b = b ^ a结合律:(a ^ b) ^ c = a ^ (b + c)一组数据,a, b , c…他们之间进行异或操作,得

2022-05-31 14:24:35 1420

原创 C++类继承时构造函数与析构函数的执行顺序

C++类继承时构造函数与析构函数的执行顺序在C++类中,类A继承类B时,如果创建一个A的对象时,会首先调用基类的构造函数,再调用派生类的构造函数,而析构函数的执行相反,但是当基类和派生类分别有一个成员对象时,构造函数与析构函数的执行顺序又是怎样的呢?基类有成员对象说明:三个类分别为Base,Son和Temp,类图如下所示:代码示例:#include <iostream>using std::cout;using std::endl;class Temp { //

2022-05-24 20:32:29 1662 7

原创 C++实现二叉树的创建以及四种遍历方式(递归与非递归)

C++实现二叉树的创建以及四种遍历方式(递归与非递归)语言这个东西不用真的会忘, 我记得前前后后C++的基本语法我也看了好几遍了,一直没有动手写过什么东西,所以一遍遍的看,一遍遍的忘… …正好最近在看数据结构,想着自己用C++来实现一下,一方面是熟悉整个逻辑过程,加深对数据结构的理解,另一方面,也熟悉一下C++。下图是我们要创建的二叉树,其中的#代表空字符;为了验证我们程序的正确性,现给出此二叉树的四种遍历结果:前序遍历(Preorder traversal): A B C D E F

2022-05-23 10:57:17 4475 1

原创 C++实现BF算法与KMP算法

C++实现BF算法与KMP算法语言这个东西不用真的会忘, 我记得前前后后C++的基本语法我也看了好几遍了,一直没有动手写过什么东西,所以一遍遍的看,一遍遍的忘… …正好最近在看数据结构,想着自己用C++来实现一下,一方面是熟悉整个逻辑过程,加深对数据结构的理解,另一方面,也熟悉一下C++。代码已在Jetbrains Clion IDE中编译运行通过,不同IDE以及不同编译器可能还需要做些许改动具体的BF算法以及KMP算法可以在任意数据结构的书籍中找到,本文基于《大话数据据结构》。BF算法/

2022-05-19 16:15:42 326

原创 C++实现顺序循环队列和链式队列

C++实现顺序循环队列和链式队列语言这个东西不用真的会忘, 我记得前前后后C++的基本语法我也看了好几遍了,一直没有动手写过什么东西,所以一遍遍的看,一遍遍的忘… …正好最近在看数据结构,想着自己用C++来实现一下,一方面是熟悉整个逻辑过程,加深对数据结构的理解,另一方面,也熟悉一下C++。顺序存储循环队列栈是“先进后出”(FIFO)的结构,与之相反,队列是“先进先出”(FIFO)结构,就比如我们在一个窗口排队打饭,那么先排队的人一定先打好饭(当然,要排除插队的情况)。如上图所示,如果还有

2022-05-16 16:09:24 464

原创 C++实现两栈共享和链栈

C++实现两栈共享和链栈语言这个东西不用真的会忘, 我记得前前后后C++的基本语法我也看了好几遍了,一直没有动手写过什么东西,所以一遍遍的看,一遍遍的忘… …正好最近在看数据结构,想着自己用C++来实现一下,一方面是熟悉整个逻辑过程,加深对数据结构的理解,另一方面,也熟悉一下C++。栈(Stack)是一种仅限在表尾进行插入和删除的线性表,允许插入和删除的一端称为栈顶,另一端叫做栈底。栈又被称为先进后出(FILO :First In Last Out)结构。由于栈是线性结构,所以同链表一样,可以

2022-05-16 14:51:43 448

原创 C++实现双链表(Double Linked List)

C++实现双链表(Double Linked List)语言这个东西不用真的会忘, 我记得前前后后C++的基本语法我也看了好几遍了,一直没有动手写过什么东西,所以一遍遍的看,一遍遍的忘… …正好最近在看数据结构,想着自己用C++来实现一下,一方面是熟悉整个逻辑过程,加深对数据结构的理解,另一方面,也熟悉一下C++。双链表与单链表相同,都是由结点(Node)组成,但结点结构有所不同,结点中有一个数据域和两个指针域,数据域存放结点中的数据,一个指针域指向下一个结点的地址,另一个指针指向上一个结点的地

2022-05-14 20:34:53 1560 2

原创 C++实现单链表(Single Linked List)

C++实现单链表(Single Linked List)语言这个东西不用真的会忘, 我记得前前后后C++的基本语法我也看了好几遍了,一直没有动手写过什么东西,所以一遍遍的看,一遍遍的忘… …正好最近在看数据结构,想着自己用C++来实现一下,一方面是熟悉整个逻辑过程,加深对数据结构的理解,另一方面,也熟悉一下C++。单链表是线性表的链式存储结构,同顺序存储结构(可以理解为C++中的数组)不同的是,单链表在插入和删除一个结点时,不需要移动大量的元素,但是单链表没有数组中索引的概念,所以在查询一个元素

2022-05-14 11:15:59 7707 1

原创 C/C++中的指针*是靠近数据类型还是靠近数据变量书写?

C/C++中的指针*是靠近数据类型还是靠近数据变量?在C/C++中,指针尤为重要,但是在书写时,*是靠近数据类型还是靠近变量数写呢?int *p;int* pi;其实两种书写形式并无本质不同,编译器都会认为是正确的指针变量;第一种书写形式我们可以理解为指针p是int类型的第二种书写形式我们可以理解为pi是int类型的指针变量虽然耳针本质并无不同,但是在一天语句中进行多变量声明时,第二种书写形式容易产生误解。例如:int* p, q;这条语句很容易理解为p和q都是int类型的指针变

2022-04-24 09:34:13 1968 2

原创 解决Tomcat启动时控制台乱码的问题

解决Tomcat启动时控制台乱码的问题当我们安装好Tomcat之后,启动apache-tomcat-10.0.20\bin\startuo.bat是能够正常启动的,但是有时候控制台是乱码的,如下图所示:解决办法打开apache-tomcat-10.0.20\conf\logging.properties文件,修改编码格式:将java.util.logging.ConsoleHandler.encoding = UTF-8中的UTF-8修改为GBK(注释掉原来的,在下面加一行也可以)重启Tomc

2022-04-20 09:37:16 927

原创 JavaScript内置类Date和Array

JavaScript学习笔记(四)——内置类Date和Array0x01 Date类获取系统当前时间并格式化(使用Date类)window.onload = function() {var now = new Date();//获取系统当前时间 var y = now.getFullYear(); var mm = now.getMonth() + 1; var d = now.getDate(); document.write(y + "年" + mm + "月" + d + "日")

2022-04-19 16:16:44 98

原创 JavaScript——正则表达式

JavaScript学习笔记(三)——正则表达式正则表达式(Regular Expression)是一门独立的学科,Java语言支持、C语言支持、JavaScript中也支持;正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符");正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串;主要用在字符串格式匹配方面。0x01 常见的正则表达式符号元字符.匹配换行符以外的任意字符\w匹配字母或数字或下划线或汉

2022-04-19 14:04:01 694

原创 JavaScript——事件

JavaScript学习笔记(二)——事件JavaScript中常用事件包含以下几种:blur:失去焦点change:下拉列表选中项改变,或文本框内容改变click:鼠标单击dbclick:鼠标双击focus:获得焦点keydown:键盘按下keyup:键盘弹起load:页面加载完毕 => 整个html页面中所有的元素全都加载完毕之后发生mousedown:鼠标按下mouseover:鼠标经过mousemove:鼠标移动mouseout:鼠标离开mouseup:鼠标弹起

2022-04-18 15:22:21 711

原创 JavaScript中的数据类型简介

JavaScript学习笔记(一)——数据类型虽然JavaScript是一种“弱类型”的脚本语言,但数据本身仍属于某种数据类型,本文对JavaScript中的数据类型作了简要介绍。0x01 JavaScript中的数据类型ES61之前的数据类型有6种UndefinrdNumberStringBooleanNullObjectES6之后添加了1种Symbol0x02 JavaScript中的typeof运算符typeof可以在程序运行过程中动态获取数据的数据

2022-04-18 10:30:32 606

原创 linux系统中vi/vim文本编辑器的使用简介

本文简单介绍了linux系统中vim编辑器常用的一些命令和快捷键。

2022-04-12 19:27:00 1704

原创 C++中值传递、引用传递与指针传递

C++中值传递、引用传递与指针传递本文力求用简洁的C++代码和实例及图示向读者描述清楚上述的三种函数参数的传递方式。需要注意的是引用传递只适用于C++,C语言并不支持!我们的目的我们在main()函数中定义两个变量a和b并分别赋值10和20;在main()函数外部定义一个函数swap()并分别利用上述三种参数传递方式进行传参以实现a和b值的交换,为了方便观察结果,我们分别在main函数和swap函数中分别输出a和b的地址。1.值传递代码如下:#include <iostream>u

2020-07-16 22:09:59 405

空空如也

空空如也

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

TA关注的人

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