自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法——哈希表(赎金信)

ransomNote和magazine,判断ransomNote能不能由magazine里面的字符构成。如果可以,返回true;否则返回false。magazine中的每个字符只能在ransomNote中使用一次。

2024-01-26 23:29:40 170

原创 算法题——最大交换

仅作自我学习使用

2024-01-23 15:07:15 417

原创 数据结构——二叉搜索树

二叉树

2022-07-11 20:10:57 401 1

原创 数据结构——树

分层次组织在管理上具有更高的效率查找:根据某个给定关键字K,从集合R中找出关键字与K相同的记录静态查找:集合中记录是固定的,没有插入和删除操作,只有查找动态查找:集合中记录时动态变化的,除查找,还可以发生插入和删除1、结构体定义typedef struct LNode *List;struct LNode{ ElementType Element[MAXSIZE]; int Length;};2、顺序查找(带哨兵)int SequentialSearch(

2022-06-07 17:43:53 183

原创 数据结构——堆栈

堆栈:具有一定操作约束的线性表只在一端(栈顶,Top)做插入,删除插入数据:入栈;删除数据:出栈;后入后出:Last In First Out(LIFO)数据对象集:一个有0个或多个元素的有穷线性表。操作集:长度为MaxSize的堆栈S∈Stack,堆栈元素item∈ElementType1、Stack CreateStack(int MaxSize):生成空堆栈,其最大长度为MaxSize;2、int IsFull(Stack S,int MaxSize):判断堆栈S是否已满;3、

2022-05-23 14:26:41 1738

原创 数据结构——线性表链式存储

不要求逻辑上相邻的两个元素物理上也相邻;通过”链“建立数据元素之间的逻辑关系插入、删除不需要移动数据与元素,只需要修改”链“主要操作实现1、求表长int Length(List Ptrl){ List p=Ptrl; /*p指向表的第一个结点*/ int j=0; while(p) { p=p->Next; j++; /*当前p指向的时第j个节点*/ } return j;}2、

2022-05-19 20:23:20 346

原创 数据结构——线性表顺序存储

线性表(Linear List):由同类型数据元素构成有序序列的线性结构表中元素个数称为线性表的长度,线性表没有元素时称为空表,表起始位置称为表头,表结束位置称表尾线性表的抽象数据类型描述类型名称:线性表(list)数据 对象集:线性表时n(>=0)个元素构成的有序序列(a1,a2,....an)操作集:线性表L属于LIST,整数i表示位置,元素X属于ElemetTYpe,线性表基本炒作主要有:、1、List MakeEmpty():初始化一个空线性表L;2、Ele...

2022-05-06 14:55:59 704

原创 C++——排序,拷贝,替换,算术

一、常用排序算法sort//对容器内元素进行排序 random_shuffle//洗牌 指定范围内的元素随机调整次序 merge//容器元素合并,并存储到另一个容器中 reverse//反转指定范围的元素 1.1sort功能:对容器内元素进行排序 函数原型:sort(iterator beg,iterator end,_Pred );//按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置//beg 开始迭代器 //end结束迭代器 //_Pred 谓词1.2rand.

2022-04-26 18:49:44 1091

原创 C++提高——STL常用的算法(遍历和查找)

概念:算法主要由头文件<algorithm><functional><numeric>组成<algorithm>是所有STL头文件中最大的一个,范围涉及到比较,交换,查找,遍历,复制,修改等等<functional>体积很小,只包括几个再序列上面进行简单数学运算的模板函数<numeric>定义了一些模板类,用以声明函数对象1、常用遍历算法简介for_each //遍历容器transfrom //搬运容器到另一

2022-04-23 15:24:38 165

原创 C++提高——map/multimap容器

1、基本概念map中所有元素都是pairpair中第一各元素为key(键值),起到索引作用,第二个元素为value(实值)所有元素都会根据元素的键值自动排序本质:map/mutimap属于关联式容器,底层结构是用二叉树实现优点:可以根据key值快速找到value值区别:map不允许容器中有重复key值元素,multimap允许容器中重复key值元素2、map构造和赋值功能描述:对map容器进行构造和赋值操作函数原型:map<T1,T2> mp;//map默认构

2022-04-21 08:50:05 273

原创 C++提高——set/multiset容器

1、set基本概念:所有元素在插入时自动被排序并且不允许有重复出现的元素本质:set/mutliset属于关联式容器,底层结构式用二叉树实现set和multiset区别:set不允许容器中有重复的元素、multset允许容器中有重复出现的元素set容器插入元素的时候使用insert方式2、set大小和交换:统计set容器大小以及交换set容器函数原型:size();//返回容器中元素的数目 empty(); //判断容器是否为空swapt(st); //交换两个集合容器3、set

2022-04-20 20:31:47 747

原创 C++提高——list容器

1、list容器基本概念功能:将数据进行链式存储链表(list)是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链实现的链表的组成:链表由一系列结点组成节点的组成:一个存储数据元素的数据域,另一个是存储下一个节点地址的指针域STL中的链表是一个双向循环链表优点:可以对任意位置进行快速插入或删除元素,采用动态存储分配,不会导致内存浪费和溢出链表执行插入和删除操作十分方便,修改指针即可,不需要移动大量元素缺点:容器的遍历速度,没有数组快 占用空间比数组大

2022-04-19 16:40:35 147

原创 C++提高——stack容器和queue容器

1、stack基本概念概念:stack是一种先进后出的数据结构,它只有一个出口栈中只有顶端的元素才可以被外界使用,因此栈不允许有遍历行为栈中进入数据称为--入栈 push栈中弹出数据称为--出栈 pop2、stack常用接口功能描述:栈容器常用的对外接口构造函数:stack<int> stk; //stack采用模板类实现,stack对象的默认构造形式stack(const stack &stk); //拷贝构造函数赋值操作:stack&a

2022-04-16 22:43:03 74

原创 C++提高——deque容器

1、deque容器基本概念功能:双端数组,可以对头端进行删除操作deque与vector区别vector对于头部的插入删除效率低,数据量越大,效率越低deque相对而言,对头部的插入删除速度会比vector快vector访问元素是的速度会比deque快,这和两个内部实现有关deque内部工作原理:deque内部又个中控器,维护每段缓冲区中饿内容,缓冲区春芳真实数据中控器维护的是每个缓冲区的地址,使得使用deque是像一篇连续的内存空间deque容器的迭代器也是支持

2022-04-15 16:52:55 552

原创 C++提高——vector容器

1、vector基本概念功能:vector数据结构和数组非常相似,也称为单端数组vector与普通数组区别不同之处在于数组是静态空间,而vector可以动态扩展动态扩展:并不是在原空间之后续接新空间,二十找到更大的内存空间,然后将原数据拷贝新空间,释放原空间2、vector构造函数功能:创建vector容器函数:vector<t>v;//采用模板实现啊类实现,默认构造函数vector(v.begin(),v,end)//将v.begin(),end()区间

2022-04-10 11:31:58 58

原创 C++提高编程——string容器

1、string基本概念string是C++风格的字符串,而string本质上是一个类string和char*区别char*是一个指针string是一个类,类内部封装char*,管理这个字符串,是一个char*型的容器。特点:string类内封装了很多成员方法例如:查找find,拷贝copy,删除delete替换replace,插入insertstring管理char*所分配的内存,不用担心复制和取值越界等,又类内部进行负责2、string构造函数构造函数原型:s

2022-04-09 11:25:41 84

原创 C++提高——模板和类模板

主要针对C++泛型编程和STL技术做详细讲解探讨C++更深层的使用一、模板1.1模板的概念模板是建立通用的模具,大大提高变用性1.2函数模板C++另一种编程思想称为泛型编程主要利用的主要技术是模板C++提供两种模板机制:函数模板和类模板1.2.1模板函数语法函数模板作用:建立一个通用函数其函数返回值类型和形参类型可以不是指定的,可以用一个虚拟的类型代表语法:template<typename T>其中typename可以用class替换解释:templat

2022-03-29 14:27:33 77

原创 C++核心编程——多态和文件操作

一、多态1.1多态得基本概念多态分为两类1、静态多态:函数重载和运算符重载属于静态多态复用函数名2、动态多态:派生类和虚函数实现运行多态静态多态和动态多态区别静态多态得函数地址找早绑定——编译阶段确定函数地址动态多态得函数地址晚绑定——运行阶段确定函数地址总结:多态满足条件 1、有继承关系 2、子类重写父类中得虚函数多态使用条件:1、父类指针或引用指向子类对象重写:函数返回值类型函数名参数列表完全一致称为重写//如果想扩展新的功能需求修改源码、在开发中提倡开闭原则

2022-03-14 20:24:29 853

原创 C++运算符重载和继承

一、运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型1.1加号运算符重载作用:实现两个自定义数据类型相加的运算编译器给起一个通用的名称——可以通过成员函数重载、或者通过全局函数重载使用的的指令是:operator+总结:1、对于内置的数据类型的表达的运算符是不可能改变的2、不要滥用运算符重载1.2左移运算符重载(<<)作用:可以输出自定义数据类型(一般是使用全局运算符重载)1.3递增运算符重载作用:通过重载递增运算符实

2022-03-11 12:24:59 1804

原创 C++核心编程——对象模型和this指针+友元

一、成员变量和成员函数分开存储再C++中,类内得成员变量和成员函数分开存储只有非静态成员变量才属于类得对象上//空对象占用内存空间为:1//C++编译器会给每个空对象也分配一个字节空间,是为了区分对象占内存得位置//每个空对象也应该有一个独一无二得内存地址二、this指针每一个非静态成员只会诞生一份函数实例,也就是说多个同类型得对象会共用一块代码C++通过提供特殊得对象指针,this指针解决上述问题this指针指向被调用得成员函数所属得对象this指针得用途:当形参和

2022-03-08 20:27:41 542

原创 C++核心编程——类和对象的初始化和清理(二)

一、C++中拷贝构造函数调用时机通常有三种情况1、使用一个已经创建完毕的对象来初始化一个新对象2、值传递的方式给函数传值3、以值方式返回局部对象二、构造函数嗲用规则默认情况下C++编译器至少给一个类添加3个函数1、默认构造函数(无参,函数体为空)2、默认析构函数(无参,函数体为空)3、默认拷贝构造函数,对属性进行值拷贝三、构造函数调用规则如下1、如果用户蒂尼工艺有参数构造函数,C++不提供默认无参构造但是会提供默认拷贝函数2、如果用户定义拷贝构造函数,C++不会再

2022-03-07 19:31:24 456

原创 C++核心编程

类和对象的初始化和清理(一)一、构造函数和析构函数对象的初始化和清理也是两个非常重要的问题,一个对象或者没有初始化对其使用后果都是未知的同样的使用一个对象或变量,没有既是清理也会造成一定的安全问题C++利用构造函数和析构函数解决上述问题。这两个函数将会被“编译器”自动调用,完成对象初始化和清理工作。对象的初始化和清理工作,对象的初始化和清理工作是编译器强制我们做的事,因此我们不提供构造函数和析构,编译器会提供编译器提供的构造函数和析构函数实现。构造函数:主要作用在于创建对象时为对象成员属

2022-03-07 17:21:33 251

原创 类和对象的封装

C++面向对象的三大特性为:封装、继承、多态C++认为万事万物都皆为对象,对象上有属性和行为封装一、封装的意义:封装是C++面向对象的三大特征之一将属性和行为作为一个整体表现生活中的事物将属性和行为加以权限控制封装的意义一:在设计的时候属性和行为写在一起表现事物语法:class 类名{访问权限:属性/行为};封装意义二:类在设计是可以把属性和行为放在不同的权限加以控制访问权限有三种:1、public 公共权限(类内可以访问,类外也可以访问)2、protected保护权

2022-03-03 20:17:20 644

原创 C++核心编程——内存,引用,函数提高

一、内存内存分区模型 C++程序在执行是内存分为4个区域代码区:存放函数体的二进制代码,由操作系统进行管理全局区:存放全局变量和静态变量以及常量栈区:用编译器自动分配释放,存放函数的参数值局部变量等堆区:由程序分配和释放若程序员不释放,程序结束时由操作系统释放内存四区意义:不同区域存放的数据赋予不同的生命周期给我们更大的灵活编程1.1代码区程序运行前生辰exe以执行程序,来执行程序前分为两个区域存放CPU执行的机器指令,代码区时共享的,共享的目的时对于频繁被执行的程序只需

2022-03-01 21:06:10 521

原创 基础第7-8章

七、指针7.1指针的基本概念作用:可以通过指针简介访问内存1,内存编号是从0开始记录的一般用十六进制表示2,可以利用指针变量保存地址7.2指针变量的定义和使用 指针变量定义语句:数据类型*变量名;1、定义指针:指针记录变量a的地址 int a =10; int * p; p=&a;2、使用指针可以通过解引用的方式来找到指针方向的内存7.3指针所占内存空间 在32位操作系统占用4个字节空间 64位下占8个字节7.4空指...

2022-02-25 21:37:00 518

原创 C++学习总结5~6章

五、数组5.1概述数组是一个集合里面存放了相同类型的数据元素特点一:数组中的每个数据元素都是相同的类型特点二:数组是连续的内存位置组成的5.2一维数组5.2.1一维数组定义方式(一维数组定义的三种方法)1.数据类型 数组名 [ 数组长度 ]1.数据类型 数组名 [ 数组长度 ] {值1,值2,值3....}1.数据类型 数组名 [ ] { 值1,值2 ,值3}5.2.2 一组数组组名 用途:1,可以统计整个数组在内存的长度2,可以获取数组在内存的首地址查看元素

2022-02-23 15:27:27 516

原创 C++学习总结3~4章

三3.1运算符1、算数运算发 用于处理四则运算2、复制运算符 用于表达式的赋值变量3、比较运算符 用于表达十的比较并返回一个赋值4、逻辑 运算符 用于根据表达式的值返回赋值5、递增 递减 前置 先让变量+1,然后进行表达式运算后置 先进行表达式运算,后让变量+13.2赋值运算四、程序结构 —— 三种程序运行结构、顺序结构、选择结构、循环结构4.1选择结构 if语句 作用:执行满足田间的语句 单行格式if语句 ...

2022-02-21 20:44:30 443

原创 C++学习总结1-2章节

一、注释1、单行注释 使用的符号为“//”2、多行注释 使用的符号为“/* 内容 */ ”二、变量——给一段指定的空间起名,方便这段内存管理语法 类型 名称 = 赋值三、常量 —— 用于记录程序中不可更改的数据1、#define 宏常量(通常在文件上方定义)2、const(constant)修饰常量(通常在变量定前家关键字const)使用方法为 const int a=10四、标识符(关键字)系统已经引用的五、标识符的命名规则1、不可以是关键字 2、只能由字母、数字、

2022-02-20 20:16:08 374

空空如也

空空如也

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

TA关注的人

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