自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 java-ACM输入输出格式

java-ACM输入输出格式

2021-03-17 20:35:46 812

原创 Markdown学习

Markdown学习标题:一级标题 # + 空格二级标题 ## + 空格。。。字体:你好:** + 语言 + **可以加粗你好: * + 语言 + *可以变斜体你好 : *** + 语言 + *** 可以加粗变斜体引用你好上述为> + 空格分割线上述为 —图片![截图](图片地址)超链接点击跳转链接上述为[链接名称]+()列表AB上述通过1+.+空格即可AB上述通过- + 空格即可表格可以采用快捷键即可代码public```

2021-03-12 18:43:11 122

原创 Redis学习(绪论)——redis在linux上的安装

在Linux系统中安装Redis:1、下载Redis安装包安装包链接如下:链接:https://pan.baidu.com/s/12Y9YVZo0aSGqZAxmiE1v4A提取码:htty2、通过xshell和xftp从主机往虚拟机(服务器)中传入Redis安装包3、将Redis安装包解压到/opt文件中tar -zxvf 压缩包名称4、基本的环境安装yum install gcc-c++ #安装基本的环境库make #开始安装ma

2021-03-10 19:44:32 198

原创 Linux学习(二)一些常见的Linux命令

1、关机shutdownshutdown -h 102、列出所有文件ls /3、各种文件/bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。/boot: 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。/dev : dev是Device(设备)的缩写, 存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。/etc: 这个目录用来存放所有的系统管理所需要的配置文件和子目录。/home:用户的主目录

2021-03-10 15:30:05 73

原创 Linux学习(一)-CentOS7安装教程

Java开发之路:JavaSE、MySQL、前端(HTML、Css、JS)、JavaWeb、SSM框架、SpringBoot、Vue、SpringCloud消息对立、缓存(Redis)、搜索引擎(ES)学习方式:1、认识Linux2、基本的命令(文件操作、目录管理、文件属性、Vim编辑器、账号管理、磁盘管理)3、软件的安装和部署(Java、tomcat、docker)Linux-Redis-DockerCentOS7安装链接:链接:提取码:oyf0CentOS安装注意事项...

2021-03-09 18:43:40 84

原创 树的学习——树的存储结构

树的存储结构:双亲表示法:采用一组连续的存储空间来存储每个结点,同时在每个结点中增设一个伪指针,指示双亲结点在数组中的位置。根节点的下标为0,其伪指针域为-1。孩子表示法:将每个结点的孩子结点都用单链表连接起来形成一个线性链表,n个结点具有n个孩子链表。...

2020-12-23 20:46:40 174

原创 图的学习(二)——图的基本操作

1. 图的基本操作(1)Adjacent(G,x,y)判断图G是否存在边<x,y>或(x,y)(2)Neighbors(G,x)列出图G中与结点x邻接的边;(3)InsertVertex(G,x)在图G中插入顶点x。(4)DeleteVertex(G,x)从图中删除顶点x。(5)AddEdge(G,x,y)若无向边(x,y)或者有向边<x,y>不存在,则向图G中添加该边。(6)RemoveEdge(G,x,y)若无向边(x,y)或者有向边<x,y>存在,则在图

2020-12-23 16:32:27 264

原创 图的学习(三)——BFS与DFS

1.图的广度优先搜索图的遍历:从图中某一顶点出发,按照某种搜索方法沿着图中的边对图中的所有顶点访问一次且仅访问一次。广度优先搜索(1)首先访问起始顶点v;(2)接着由出发依次访问v的各个未被访问过的邻接顶点w1w_1w1​,w2w_2w2​,…,wtw_twt​;(3)然后依次访问w1w_1w1​,w2w_2w2​,…,wtw_twt​的所有未被访问过的邻接顶点;(4)在从这些访问过的顶点出发,访问它们所有未被访问过的邻接顶点;(5)…,以此类推;#define MAX_TREE_SIZE

2020-12-23 16:31:55 498

原创 图的学习(一)——图的存储结构

图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。注意点:(1)图中数据元素叫做顶点;(2)顶点集合V要为有穷非空;(3)边集可以是空的;有向边称为弧;<v,w>即v指向w,v称为弧尾,w称为弧头。简单图:无自环和重边;连通图的生成树:是一个极小的连通子图,它含有图中全部的n个顶点,但只有足以构成一颗树的n-1条边。有向树是图,而不是树,其度为入度和出度之和。路径长度:路径上边的

2020-12-23 14:56:00 220

原创 树的学习(四)——哈夫曼树

结点的路径长度:从根节点到该结点的路径上的连接数。树的路径长度:树中每个叶子节点的路径长度之和结点带权路径长度:结点的路径长度与结点权值的乘积树的带权路径长度:WPL(Weighted Path Length)是树中所有叶子结点的带权路径长度之和。WPL的值越小,说明构造出来的二叉树的性能越优。哈夫曼树即是性能最优的二叉树。哈夫曼树的构造算法:(1)将n个结点作为n棵仅含有一个根结点的二叉树,构成森林F;(2)生成一个新结点,并从F中找出根结点权值最小的两棵树作为它的左右子树,且新结

2020-12-23 09:39:45 146

原创 树的学习(三)-树、森林及二叉树的相互转换

普通树转换为二叉树:(1)在树中所有的兄弟结点之间加一条线(2)对每个结点,除了保留与其长子的连线外,去掉该结点与其他孩子的连线。森林到二叉树的转换:(1)先将森林中的每棵树变为二叉树(2)将各二叉树的根结点视为兄弟从左至右连在一起,就形成了一颗二叉树。二叉树到树、森林的转换(1)若结点x是其双亲y的左孩子,则把x的右孩子,右孩子的右孩子,…,都与y用连线连起来。(2)去掉所有双亲到右孩子之间的连线。树的遍历:按照某种方式访问树中的每个结点,且仅访问一次。先根遍历、后根遍历、层次遍历

2020-12-21 20:47:37 438

原创 MySQL的学习(一)-DQL语言的学习

DQL(Data Query Language)(查询语言)#进阶1:基础查询语法:select 查询列表 from 表名;特点:1、查询列表可以是:表中的字段、常量值、表达式、函数2、查询的结果是一个虚拟的表格#进阶1:基础查询/*语法:select 查询列表 from 表名;特点:1、查询列表可以是:表中的字段、常量值、表达式、函数2、查询的结果是一个虚拟的表格*/#打开某个表格USE myemployees;#1.查询表中的单个字段SELECT last_nam.

2020-12-16 15:49:40 129

原创 MySQL的学习(二)-基础查询

MySQL的基础查询一、语法select 查询列表from 表名;二、特点1、查询列表可以是字段、常量、表达式、函数,也可以是多个2、查询结果是一个虚拟表三、示例1、查询单个字段select 字段名 from 表名;2、查询多个字段select 字段名,字段名 from 表名;3、查询所有字段select * from 表名4、查询常量select 常量值;注意:字符型和日期型的常量值必须用单引号引起来,数值型不需要5、查询函数select 函数名(实参列表);6、查询

2020-12-16 15:46:08 90

原创 线索二叉树

线索二叉树的作用:(1)将各结点的空指针利用起来;(2)左分支指向其前驱结点,右分支指向其后驱结点;

2020-12-16 15:32:51 297

原创 MySQL学习(一)

1.什么是数据库?2. 数据库的好处:实现数据持久化;使用完整的管理系统统一管理,易于查询。3. 数据库的相关概念:DB:(Database)数据库DBMS:(Database Management System)数据库管理系统SQL:(Structure Query Language)结构化查询语言;专门用来与数据库通信的语言;SQL的优点:(1)不是某个特定数据库供应商专有的语言,几乎所有DBMS都支持SQL;(2)简单易学;(3)可以进行复杂和高级的数据库操作。三者之间关系:

2020-12-15 16:15:40 98

原创 广度优先搜索实例讲解

1. 力扣101题c++代码如下:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: bool isSymme

2020-12-15 14:47:53 297

原创 c++各种数据类型大小分析

在c++中可以通过sizeof关键字来求出各数据类型大小;代码如下:int main(){ cout <<"int类型:"<<"大小:"<<sizeof(int) <<" int最小值:"<< INT_MIN<<" int最大值:"<<INT_MAX<<endl; cout << " lont int类型:" << "大小:" << sizeof(long) <&

2020-12-15 12:28:50 1362 1

原创 广度优先搜索解题技巧

广度优先搜索(BFS)是按层的概念进行的搜索算法,利用Quene记录需要被展开的TreeNode。广度优先搜索解题模板:(1)初始化队列(通常加入根结点)(2)当队列非空时:pop出队列中的所有值(当前层,需记录size);并分别对pop出的每个值的左孩子和右孩子添加进队列(这里先添加左孩子还是右孩子是根据题目来的);增加层数;将相应的元素添加进最终结果中;注意:一定是先将当前层的所有结点元素pop出去(因此需要size记录当前层的元素数量),而不是不断地pop元素出去,因为可以知道,在po

2020-12-15 10:17:31 208 1

原创 树的学习——(二)二叉树的存储结构及访问

1. 二叉树的顺序存储:用一组连续的存储单元依次自上而下、自左而右存储完全二叉树的结点元素。完全二叉树的逻辑关系的表示:利用了完全二叉树的双亲结点和孩结点的编号规则。即双亲结点编号为i,其左孩子结点为(2i),右孩子结点为(2i+1),反之亦可。因此为了保证完全二叉树的结点编号与内存数组中的结点编号一致的话,此时应该使数组内存前空一格。而这空的一格通常可以存储二叉树的结点个数。如下:对于非完全二叉树,是不可以采用之前方法对逻辑关系进行表示。其逻辑关系表示为:添加一下不存在的空结点,在数组中用0表

2020-12-14 11:02:46 713

原创 树的学习-二叉树的性质

二叉树:(1)n=0时,二叉树为空。(2)n>0时,由根节点和两个互不相交的被称为根的左子树和右子树。左子树和右子树也分别是一颗二叉树。所有非叶子结点最多有两个孩子结点。二叉树的孩子结点:左孩子和右孩子。它们是不同的结点。二叉树的五种形态:所以三个结点的二叉树有5种可能性,分别为:二叉树与度为2有序树:(1)二叉树可以为空(二叉树中子结点数最多为2个),而度为2的有序树至少有三个结点(因为度为2的有序树是表示子结点数最多为2,且至少存在一个度为2的结点)。(2)二叉树的孩子结点始

2020-12-10 21:05:32 535

原创 树的结构-树的各种定义及性质

树:n个结点组成的有限集合。(1)有且仅有一个特定的称为根的结点。(2)当n>1时,其余结点可分为m个互不相交的有限集合,其中每个集合本身又是一棵树,称为根节点的子树。注意:n个结点的树中只有n-1条边。除根节点外,每个结点都有一个前驱边,因此n个结点的树中n-1条边。树的基本概念:祖先结点和子孙结点双亲结点和孩子结点兄弟节点度:树中一个结点的子结点的个数称为该结点的度。结点的度即为它孩子结点的个数。树的度:所有结点的最大度数。度大于0的结点称为分支结点(存在分支结点)。度为0

2020-12-10 19:55:10 1139

原创 串的学习(一)-朴素模式匹配算法

1.串与线性表的区别串是一种特殊的线性表,数据元素之间呈线性关系。它与线性表的不同是线性表中的数据元素可以存放任意的数据元素,而串中数据元素只能存放字符集(中文字符、英文字符、数字字符、标点字符等)。串的增删改查通常以子串为数据对象。2.字符集编码字符集:英文字符-ASCII字符集(只含有英文字符),对于一个英文字母来说,一个英文字母占1B。中英文-Unicode字符集(既含有英文字符,又含有中文字符)Unicode字符集编码方式有UTF-8和UTF-16等编码方案(编码方案可看作字符集的加工函

2020-12-10 10:22:00 410

原创 defaultdict的用法

collections.defaultdict()是python中collections模块下的一个方法;它的用法是当字典内没有对应的键时,不进行报错,而是在键对应的值处生成相对应的数据类型,例如其括号内装的是数据类型,可以是int,list,dict等;从以下几个例子可以看到:from collections import defaultdictdict1 = defaultdict(int)dict2 = defaultdict(set)dict3 = defaultdict(str)dic

2020-12-09 16:50:43 126

原创 特殊矩阵的压缩存储

1. 对称矩阵的压缩存储:只存储主对角线+下三角区按行优先原则将各元素存入一维数组中。矩阵下标 -》一维数组下标映射关系为:第aija_{ij}aij​(当i>=j时)是一维数组中第(1+2+…+(i-1))+j-1个元素。当i<j时,可以利用aija_{ij}aij​=ajia_{ji}aji​2. 三角矩阵与带状矩阵的压缩存储:其思考方式也与对称矩阵的压缩存储一样。只需要找到aija_{ij}aij​在一维数组中的哪一个元素即可。3. 稀疏矩阵的压缩存储:(1)压缩存储

2020-12-09 10:11:37 191

原创 python处理字符串常用语句

python处理字符串常用语句1. split(‘char’,num)用于分割字符串,返回元素个数为num+1(默认为全部划分)的列表例如:s = "0:start:0"list1 = s.split(':')结果为list1 = ['0', 'start', '0']s = "0:start:0"list1 = s.split(':',1)结果为list1 = ['0', 'start:0']2. strip(‘char’)用于除去字符串前后特定字符(默认为空格或者换行

2020-12-08 13:57:40 111

原创 c++引用小结

在c++中引用方式为:int &c = a; 引用的本质为int * const c=a;因此c本质是个指针常量,且其指针指向不可变。因此在有些需要传递某种数据类型的指针时,可以用引用的方式传递。引用的第二种方式,就是系统会自动对引用变量进行解引用取值操作;例如:int &c = a;c = 100;//*c = 100int &c = a;本质像我前面说的,是将a的地址传递给c,c本质为指针常量。c = 100;这句话如果将c看作指针常量来说,是错误的,此时

2020-12-07 21:16:25 137

原创 浅拷贝与深拷贝

浅拷贝:编译器单纯进行简单的赋值拷贝操作深拷贝:在堆区重新开辟一片区域。进行拷贝操作。浅拷贝带来的问题是:对于属性有在堆区开辟的,一定要进行深拷贝操作,而不是浅拷贝;因为如果只是简单地赋值拷贝操作,类在析构时,释放堆区内存会发现错误,即对于已经释放地内存重复进行释放;而深拷贝是对于开辟在堆区地属性,重新在堆区开辟一块内存空间,然后该内存空间存放着类属性值。...

2020-12-07 19:22:04 94

转载 c++字符串添加的常用方法

C++ string append方法的常用用法append函数是向string的后面追加字符或字符串。1).向string的后面加C-stringstring s = “hello “; const char *c = “out here “;s.append©; // 把c类型字符串s连接到当前字符串结尾s = “hello out here”;2).向string的后面加C-string的一部分string s=”hello “;const char *c = “out here “;

2020-12-06 18:53:45 8495

原创 Stack栈的解题技巧

Stack栈特点:需要回顾之前的状态,且只需要回顾某个状态一次即可。特性:LIFO(Last In First Out)适用于需要记录之前的状态,必要的时候可以找回之前的状态,或者利用之前的值不像array,不可以采用index访问,每次只能拿栈顶元素。动态规划与栈的区别动态规划是记录之前所有的状态,随时可以访问任何一个子问题,所有通常采用Array和HashTable,而且不会回到之前的状态,只会利用之前的值。Stack:每次只需要栈顶元素,并且每个状态只会被用**O(1)**次。栈的

2020-12-06 15:43:32 115

原创 队列的应用

1. 队列的应用-树的层次遍历对于树结构,当从根结点开始访问时,将根结点放入队列中,并将其子结点放入队列的队尾,并将该结点从队头弹出;不断循环这个过程,直至所有节点被访问完全。2. 队列的应用-图的广度优先遍历图的广度优先遍历:首先从任一结点出发,将其放入队列中,然后访问该节点的邻居结点,并将其放入队列的尾部,同时将该结点标记为已参观结点;然后依次对队列中的每个结点进行上述操作,最终可以实现图的广度优先遍历。3. 队列在操作系统中的应用操作系统处理多个多个进程:LILO(先进先出去)打印数据

2020-12-06 14:39:51 1488

原创 栈的应用(三)-栈在递归中的应用

函数调用栈:最后被调用的函数最先执行结束。函数调用的特点:后进先出(LIFO)函数调用时,需要一个栈存储,存储内容有:(1)函数返回地址(2)实参(3)局部变量每进入一层递归,就将递归调用所需信息压入栈顶。每弹出一层递归,就将弹出相应信息。递归算法:使用递归时可能包含很多次重复计算。太多层递归可能导致栈溢出。...

2020-12-06 14:27:08 988

原创 栈的应用(二)-在前缀(后缀)表达式中求值

1. 后缀表达式(逆波兰表达式)运算符在两个操作数后面中缀转后缀的手算方法:(1)确定中缀表达式的各个运算符的运算顺序(2)选择下一个运算符,按照【左操作数 右操作数 运算符】的方式组合成一个新的操作数(3)如果还有运算符没被处理,就继续(2)注意:由于运算顺序不唯一,因此对应的后缀的表达式也不唯一但对于计算机来进行转化的话,只会产生第一种结果,因为算法的确定性,一种输入只能产生一种输出。计算机中缀转后缀的原则:左优先原则。左优先原则:只要左边的运算符能先计算,就优先算左边的。后缀表

2020-12-06 14:10:13 857

原创 栈的应用(一)-括号匹配问题

注意点(1)当扫描到右括号时,需要判断下栈是否为空;(2)当扫描完还未发现错误时,需要判断下栈是否为空,当栈为空时,此时左括号多了,也是不匹配的。c++代码如下:#define MaxSize 10typedef struct SqStack{ int data[MaxSize]; int top;//栈顶指针,存放着从栈底开始的栈顶元素的值的下标值。};void InitStack(SqStack &S);//初始化栈bool PushStack(SqStack &S

2020-12-06 09:31:29 133

原创 IDE和IDLE是什么

IDE(集成开发环境)(Integrated Development Environment):是一个可视化编程环境

2020-12-04 20:46:20 2539

原创 队列的学习-双端队列

1. 双端队列、栈、队列的区别2. 双端队列的区分可分为双端队列、输入受限的双端队列、输出受限的双端队列。3. 对输出序列合法性的1判断关键点:找出每次要删除一个元素之间的队列排列即可。...

2020-12-04 20:32:38 201

原创 队列的学习(三)-队列的链式存储

1. 队列的链式存储的定义//结点的定义typedef struct LinkNode{ int data; LinkNode* next;}LinkNode;//链式队列的定义;需要记录队头的指针,也需要记录队尾的指针typedef struct LinkQuene{ LinkNode *front, *rear;}LinkQuene;2. 链队列的初始化(带头结点)//链队列的初始化(带头结点)void InitQuene(LinkQuene &Q){ Q.f

2020-12-04 20:11:21 70

原创 队列的学习(二)-顺序队列(循环队列)

1.顺序存储的队列的定义物理存储空间为一片连续的内存空间。#define MaxSize 10//顺序队列的定义typedef struct SqQuene { int data[MaxSize]; int front, rear;//队头队尾指针;队尾指针指向接下来要插入数据元素的位置。};2. 顺序队列的初始化//顺序队列的初始化void InitQuene(SqQuene &Q){//rear指针指向队尾元素后一个位置,front指针指向队头元素 Q.front

2020-12-04 19:25:18 289

原创 队列的学习(一)-队列的初识

1. 队列的定义队列(Quene)是只允许在一端进行插入(叫做入队),在另一端删除(叫做出队)的线性表。队头:允许删除的一端。队尾:允许插入的一端。队列的特点:先进先出(FIFO)(First In First Out)2. 队列的基本操作InitQuene(&Q):初始化栈。构造一个空队列Q,分配内存空间。DestroyQuene(&Q):销毁栈。销毁并释放队列Q所占用的内存空间。EnQuene(&Q,x):入队,若队列未满,则将x加入使之成为新的队尾。DeQue

2020-12-04 15:51:22 241

原创 栈的学习(三)-链栈

1. 链栈的定义//链栈的定义typedef struct Linknode { int data; struct Linknode*next;}*LiStack;链栈的定义与链表定义十分相似,其唯一的不同是链表的数据操作可以在两端进行,而链栈的数据操作只能在一端进行。把链头当作栈顶即可。进栈/出栈都只能在栈顶一端进行(链头作为栈顶),因此其插入和删除只能在表头进行。...

2020-12-04 15:41:32 162

原创 栈的学习(二)-顺序栈

1. 顺序栈用顺序存储方式实现的栈2.基本操作(1)顺序栈的定义//顺序栈的定义#define MaxSize 10typedef struct SqStack{ int data[MaxSize]; int top;//栈顶指针,存放着从栈底开始的栈顶元素的值的下标值。};(2)初始化栈//初始化栈void InitStack(SqStack &S){ S.top = -1;//初始化栈顶指针}(3)进栈实现//进栈实现bool Push(SqStack

2020-12-04 15:31:59 110

空空如也

空空如也

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

TA关注的人

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