自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++内存管理

一般情况下,类的对象是无法访问的,因此malloc无法对对象进行初始化但是可以使用new来分配动态内存,可以调用默认构造(或者带参构造)free和delete同理,调用delete会自动析构。

2024-04-20 01:11:30 303

原创 C++运算符重载,初始化列表,隐式类型转换,友元

参数个数与操作个数应该一致(双目操作符就是2个参数,同时参数中包括this)

2024-04-19 20:08:01 371

原创 C++的&引用和内联函数,auto

引用就是取别名可以给一个变量取多个别名,也可以给别名取别名别名与本名拥有同一地址,对任意别名修改,也会同时修改其他别名和本名。

2024-04-11 00:32:59 320

原创 C++类和对象

通常情况下,成员变量是私有的,成员函数是公有的。

2024-04-11 00:32:50 741

原创 C++入门:命名空间namespace,cin,cout,缺省参数,函数的重载

namespace本质上是定义了一个命名空间域通过创建命名空间域可以预防变量的冲突问题命名冲突时,编译器会首先从局部中找,然后从全局中找,但是不会从命名空间中找eg.

2024-04-02 22:37:43 294

原创 数据结构:归并排序

时间复杂度O(N*logN)如果两个序列有序,通过归并,可以让两个序列合并后也有序,变成一个有序的新数组对于一个数组,如果他的左右区间都有序,就可以进行归并了。

2024-03-30 10:26:58 504

原创 数据结构:非比较排序

非比较排序都具有很大的局限性,包括技术排序,基数排序,桶排序等。

2024-03-30 10:26:49 238

原创 数据结构:插入排序,希尔排序(缩小增量排序)

当插入第 i 个元素时,前面的数据已经排好序了,将后续的数据按大小插入到前面已经排好序的数组中,就是插入排序。

2024-03-24 23:26:29 358

原创 数据结构:选择排序,快速排序

直接遍历数组,找出最大值和最小值,记录下标,将最大值和最小值分别与首位交换但是由于当begin == maxi时,会导致出错,因此需要 if 特殊判断。

2024-03-24 23:26:20 419

原创 数据结构:链式二叉树

对于二叉树而言,如果不是完全二叉树,就不再适合用数组存储了。

2024-03-14 23:21:14 415

原创 数据结构:堆

1.堆是一个完全二叉树2.小堆(任何一个父亲<=孩子),大堆(任何一个父亲>=孩子)

2024-03-14 23:21:02 695

原创 数据结构:二叉树

树是一种非线性的数据结构,它是由n个有限结点组成的一个具有层次关系的集合它有一个特殊的结点,叫做根节点,根节点没有前驱结点除根节点外,其余的结点被分为M(M>0)个互不相交的集合(T1,T2......Tm),其中每一个集合Ti(1

2024-03-03 01:27:44 436

原创 数据结构:栈和队列(队列)

一端进,从另一端出,先进的数据一定先出去,进数据的一端叫队尾,出数据的一端叫队头。

2024-03-02 00:21:40 478

原创 数据结构:栈和队列

如果使用单链表实现栈,在尾节点方便插入数据,但想要删除数据,就需要遍历链表,因此需要在单链表中将头节点作为栈顶。使用数组实现栈的插入删除更为方便,且效率更高,不过需要扩容(扩容的消耗不大)栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。栈的删除操作叫出栈,出数据也在栈顶。栈可以通过数组和链表两种方式实现。

2024-02-04 23:55:42 519

原创 时间复杂度和空间复杂度

内存中管理数据--数据结构--快/小/带电存储硬盘中管理数据--数据库/文件--慢/大/不带电存储顺序表优点:1.下标的随机访问(排序,二分查找)2.cpu高速缓存命中率高(cpu读取数据会将一段长度的内存放入缓存区,每次向后一段固定长度,直到数据全部在缓存区内为止)(顺序表内存密度较高(顺序表存储的数据在内存上是连续的))缺点:1.前面部分插入删除效率低下(需要挪动数据)2.扩容(效率损失,空间浪费)链表的优点:1.任意位置插入删除效率都很高2.按需申请释放,不存在空间浪费。

2024-02-01 12:03:26 366

原创 贪吃蛇游戏的实现

简单的贪吃蛇游戏的游戏的实现

2024-01-28 21:14:09 468

原创 数据结构:双向链表(带头双向循环链表).

带头:链表的头节点不存储有效数据双向:链表结构体中存在两个指针,分别指向链表的前后两个节点循环:链表的尾节点指向头节点,形成循环当双向链表只有头节点时,该链表为空链表头节点不能进行删除或修改。

2024-01-27 23:30:43 524

原创 链表的分类

这三行属性结合,共有八种链表:1.带头单向循环2.带头双向循环3.带头单向不循环4.带头双向不循环5.带头单向循环6.带头双向循环7.带头单向不循环8.带头双向不循环。

2024-01-22 15:59:21 377

原创 简单的通讯录项目的实现

首先,为了减少通讯录项目的工程量,这里要引用前一篇文章完成的顺序表的基本功能这里将代码放到这里,方便查找。

2024-01-21 10:06:56 486

原创 数据结构:单链表

链表和顺序表一样,都是线性表,逻辑结构上是线性的,但不同的是,链表在物理结构上不是线性的链表是由一个一个节点构成的,一个节点分为两部分:存储的数据和指针(结构体指针)其中的指针存储的是该节点指向的下一个节点的地址。

2024-01-20 20:53:07 432

原创 数据结构:顺序表

数据结构是计算机存储,组织数据的方式。

2024-01-20 08:58:42 700

原创 经典算法题:将一个整数的二进制位的奇数位和偶数位交换

接下来只要使用移位操作符(>和<)将奇数位放到偶数位上,偶数位放到奇数位上就可以了。如果将每一位依次交换太过麻烦,因此可以考虑直接取出整数所有的奇数位和偶数位在交换。可以考虑将整数&(全为1取1,否则取0)处理。如此就拿到了该整数的奇数位和偶数位。将整数对应的偶数位&0,

2024-01-17 23:14:50 290

原创 C++中的预处理

1.__FILE__进行编译的源文件2.__LINE__文件当前的行号3.__DATE__文件被编译的日期4.__TIME文件被编译的时间5.__STDC__如果编译器遵循ANSIC,其值为1,否则未定义。

2024-01-17 22:31:06 1444

原创 编译和链接

多个.c文件单独经过编译器处理生成对应目标文件,多个目标文件和链接库一起经过链接器处理生成最终的可执行程序 (链接库是指运行时库(支持程序运行的基本函数集合)或者对三方库)编译:预处理(预编译)(1.头文件的包含 2.#define定义符号的替换 3.注释的删除)+编译(词法,语法,语义分析)+汇编(将汇编的代码翻译成二进制指令)3.执行程序代码,这时程序将使用函数栈帧,存储函数的局部变量和返回地址,同时使用静态内存,保留变量的值。链接:把多个目标文件链接生成一个可执行程序,包括符号的决议和重定义。

2024-01-17 10:57:00 386

原创 c++面向对象三维向量的运算

(3)计算两个三维向量的和的成员函数 Vector3D Plus(Vector3D v1, Vector3D v2);(5)在主函数中定义 Vector3D 类的三个对象 v1、v2 和 v3 并初始化 v1 和 v2,使用成员函数。Plus 计算 v1 和 v2 的和并赋值给 v3,并计算 v1、v2 和 v3 的长度并分别输出。(4)计算三维向量的长度的成员函数 double Mod();(1)double 型数据成员 x、y、z,并实现数据封装。(2)带参构造函数;

2024-01-11 23:45:49 375

原创 一个数组中的数据成对出现,寻找其中的唯一一个只出现过一次的数

同时,相同数字进行^后,由于它们完全相同,所以为0,若数组中数据为(a,b,c,b,a),最终结果就为c^0 = c。对于^运算符,它的运算存在交换律,eg:a^b^c = a^c^b。

2024-01-10 00:17:58 354

原创 C++文件操作

磁盘上的文件就是文件,但是在程序设计中,一般谈的文件通常分为两种:程序文件和数据文件(从文件功能的角度来分类)eg.FILE* pf = fopen("./../data.txt","w")//打开文件,写入return 1;//写文件i < 26;i++)//读文件//a//b//读文件会按顺序依次往后读//关闭文件fclose(pf);pf = NULL;return 0;

2023-12-31 17:17:37 978 1

原创 动态内存管理

创建数组或定义变量时空间开辟的大小是固定的.数组在申明是,必须指定数组的长度,数组空间一旦确定就不能调整了但是,对于空间的需求,有时需要空间大小在程序运行时才知道,所以数组编译时开辟的空间方式就不满足了,因此C语言引入了动态内存开辟,让程序员可以申请和释放空间,比较灵活.malloc,free,calloc和realloc都定义在头文件

2023-12-30 12:24:36 522

原创 C++第4关:读取文件中指定学生信息

题目描述:实现从文本中读取出指定学号的学生信息并显示,文本文件存放格式是每一行对应一个学生信息,最后一行没有换行符。输出该学号学生信息 如果不存在则输出。处补充代码,完成本关要求。根据提示,在右侧编辑器。

2023-12-27 22:27:46 566

原创 C++第3关:统计文本字母数量

中文本,统计文本中字母数量。处补充代码,完成本关要求。根据提示,在右侧编辑器。

2023-12-27 22:09:23 426

原创 C++第2关:文件读取和写入

平台会对你编写的代码进行测试,若与预期输出一致,则算通关。中读取三个整数,然后把这三个整数保存到。处补充代码,完成本关要求。中,两整数之间一个空格。根据提示,在右侧编辑器。

2023-12-27 22:06:55 497

原创 C++第1关:HelloWorld文件

平台会对你编写的代码进行测试,若与预期输出一致,则算通关。处补充代码,完成本关要求。根据提示,在右侧编辑器。

2023-12-27 22:03:32 502

原创 自定义类型:结构体,联合和枚举

2.其他成员变量要对齐到对齐数 ( 编译器默认的对齐数 与 该成员变量大小的较小值 )的整数倍的地址处 ( vs中的默认对齐数为8 , Linux中gcc无默认对齐数)由一个或多个成员构成,这些成员可以是不同的类型,但是编译器只会为最大的成员分配足够的内存空间,其特点是所有成员共用一块内存空间,所以它也被叫做:"共用体".联合体的大小至少是最大成员的大小,当最大成员的大小不是最大对齐数的整数倍是,就要对齐到最大对齐数的整数倍.(联合体与结构体一样,也存在对齐).= *p ,编译器会默认a和*p为不同类型。

2023-12-27 16:55:33 1016

原创 删除单向链表中的重复结点

完成函数dubdel的编写,该函数删除单向链表中的重复结点,如果链表中存在重复结点(除next指针外的其它数据成员的值相同)时,保留离链首最近的结点。

2023-12-26 22:55:26 352

原创 数据在内存中的存储

对于整数来说,数值的存储方式时补码(可以将符号位和数值位统一处理),超过一个字节的数据在存储时存在存储顺序的问题,存储方式分为大端字节序存储和小端字节序存储.整数的二进制表示方式有三种:原码反码补码,这三种表示方式都有符号位(最高位,0为正,1为负)和数值位(除去最高位后的其他位)浮点数在内存中的存储:浮点数的存储方式与整形不同,任何一个二进制浮点数v都可以表示为(-1)的s次方*M*2的E次方。因此对于32位浮点数(float),最高位存储s,接着8位存储E,剩下23位存储M。-1的s次方为符号位,

2023-12-24 13:52:24 398 1

原创 C++ 面向对象 - 类和对象的创建和使用 设计一个长方形类

类只是一种形式化的定义,要使用类提供的功能,必须使用类的实例,即对象,一个类可以定义多个对象,而对象要占据一定的内存空间。类和对象的关系就像整形和变量的关系。如果是数据成员,就可以对它进行赋值,如果是函数成员,就可以调用它。每个对象都包含类中定义的各个数据成员的存储空间,共享类中定义的成员函数。普通函数,h 、w 分别代表长方形的高宽,函数用来创建一个 Rectangle 对象并返回。为了完成本关任务,你需要掌握对象的创建和通过对象访问类的成员。本关任务:设计一个长方形类,通过访问它的成员变量来计算面积。

2023-12-23 10:21:01 500 1

原创 C++ 面向对象 - 类和对象的创建和使用 设计汽车类

其中打开车门、关闭车门、打开车灯、关闭车灯四个函数,用于改变对象内部对应的成员变量的值。根据输入的命令(命令由1-6表示,分别对应调用打开车门、关闭车门、打开车灯、关闭车灯、加速、减速函数)输出汽车的最终状态,若输入命令。,则分表调用了打开车门、打开车灯、加速这三个函数,因此最后输出的汽车状态为车门打开,车灯打开和速度为10。成员函数:打开车门、关闭车门、打开车灯、关闭车灯、加速、减速。之间补充代码,设计汽车类实现汽车的基本功能,根据输入的命令来输出汽车的整体状态。过 20,最短长度 1。

2023-12-23 10:16:03 454 1

原创 C++ 面向对象 - 类和对象的创建和使用 设计一个学生信息类

如果说声明是书的目录,那么定义就是目录所指的具体内容。类的定义,指的是根据声明具体实现类的功能,与一般的函数定义很相似。比如:class Testpublic:int a;// 声明一个带有两个成员函数的类void Test::PubFun() // 定义公有的那个成员函数a = 10;b = 10;// b 是私有成员变量,只能在成员函数的定义中访问void Test::PriFun() //定义私有的那个成员函数a = 20;b = 20。

2023-12-23 01:28:38 844 1

原创 C++ 面向对象 - 类的继承与派生 狼人类

在前面的关卡中,我们学习的派生类都只有一个基类,称为单继承。C++ 语言支持一个子类同时继承多个父类,就像单继承时一样,继承多个父类也就相当于同时有了多个父类的公有成员和保护成员,而且可以单独为每一个父类指定继承的方式。多继承访问基类成员大体与单继承一致,但当继承的多个父类中有同名的成员时,要访问其中一个成员就不能简单的只写成员名了,必须使用作用域运算符(,函数按照狼类,人类的顺序调用两个基类的 PrintState 函数,输出他们的成员变量值。如果要继承多个类,只需将父类的类名依次写在子类类名的冒号(

2023-12-23 00:52:05 383 1

原创 研究生信息类

之间补充代码,设计学生信息类( Student )和设计研究生信息类( Graduate ),Graduate 类。中访问它私有继承的基类的成员,那也只能在这个类中增加 get、set 方法了。要私有继承一个类,只需继承时在类名前面加上 private 关键字即可。私有继承在保护继承的基础上更进一步,访问性进一步降低,父类中的。private,不仅对外不可见,对这个类的子类也不可见了。Student 类,而 Student 类。同样,如果想在某个类的。

2023-12-22 00:04:16 904

空空如也

空空如也

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

TA关注的人

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