自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 gcc/g++,make/Makefile

gcc后可以加-o xxx(需要建立的可执行程序) xxx(你的文件),后续就可以直接./xxx来运行该程序eg.指令" ldd "可以查看当前文件需要连接哪些库。

2024-11-24 13:08:49 361

原创 Linux权限

外壳程序:增加用户体验用户使用操作系统时无法直接使用内核必须通过外壳程序进行操作用户于外壳程序交流,在由外壳程序交给内核进行处理最后再由外壳程序传给用户其中用户的需求(就是用户的操作)就是指令。

2024-11-01 00:17:19 325

原创 Linux工具(yum/apt,vim)

Linux中常见的软件的安装方式 :1. yum/apt2. rpm 安装包安装3. 源码安装yum/apt相当于手机中的各种应用管家。

2024-11-01 00:17:17 442

原创 Linux基本指令

ssh root(用户名)@xx.xxx.xxx(地址)

2024-10-27 14:20:09 594

原创 C++的继承和多态

eg.

2024-10-27 14:19:40 839

原创 C++栈和队列

与之前的vector等容器不同,stack是容器适配器。

2024-07-13 17:10:18 231

原创 C++的deque(双端队列),priority_queue(优先级队列)

优先级队列需要用户在自定义类型中提供>和<的重载eg.日期类。

2024-07-13 17:10:08 561

原创 C++的List

与vector的区别在于不支持 [ ]由于链表的物理结构不连续,所以只能用迭代器访问vector可以排序,list不能排序(因为快排的底层需要随机迭代器,而链表是双向迭代器)(算法库里的排序不支持)(需要单独的排序)list存在vector不支持的功能。

2024-06-02 19:30:43 1792

原创 C++vector及其实现

第一个参数是类型(可以是自定义也可以是内置类型)相当于生成一个该类型的数组allocator是空间配置器。

2024-06-02 19:27:22 456

原创 C++模板

eg.编译器自动推演帮你生成需要的函数或类但是,当前模板只能支持相同类型参数运算eg.1.将某一类型强制类型转化为另一类型2.取消推演过程,直接给类型3.auto自动推演返回值,template 2个类型有多个模板参数,也可以多个模板参数显式实例化正常函数模板类型可以根据传入参数的类型推出模板的类型但在特殊情况下(参数中没有模板参数),无法推导出模板参数的类型因此需要显式实例化普通函数和函数模板可以同时存在,编译器会自己选择最匹配的函数这样就能让一个栈同时存两种类型的数据

2024-05-22 22:16:14 217

原创 C++的string

string的大小:两个长度没有任何不同。

2024-05-17 21:12:52 919

原创 string库的底层实现

【代码】string库的底层实现。

2024-05-17 21:12:33 138

原创 C++内存管理

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

2024-04-20 01:11:30 347

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

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

2024-04-19 20:08:01 468

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

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

2024-04-11 00:32:59 391

原创 C++类和对象

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

2024-04-11 00:32:50 782

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

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

2024-04-02 22:37:43 393

原创 数据结构:归并排序

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

2024-03-30 10:26:58 552

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

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

2024-03-30 10:26:49 281

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

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

2024-03-24 23:26:29 403

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

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

2024-03-24 23:26:20 454

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

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

2024-03-14 23:21:14 448

原创 数据结构:堆

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

2024-03-14 23:21:02 725

原创 数据结构:二叉树

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

2024-03-03 01:27:44 474

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

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

2024-03-02 00:21:40 508

原创 数据结构:栈和队列

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

2024-02-04 23:55:42 565

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

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

2024-02-01 12:03:26 387

原创 贪吃蛇游戏的实现

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

2024-01-28 21:14:09 527

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

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

2024-01-27 23:30:43 561

原创 链表的分类

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

2024-01-22 15:59:21 524

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

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

2024-01-21 10:06:56 507

原创 数据结构:单链表

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

2024-01-20 20:53:07 455

原创 数据结构:顺序表

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

2024-01-20 08:58:42 718

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

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

2024-01-17 23:14:50 323

原创 C++中的预处理

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

2024-01-17 22:31:06 2216

原创 编译和链接

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

2024-01-17 10:57:00 403

原创 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 578

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

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

2024-01-10 00:17:58 374

原创 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 1056 1

原创 动态内存管理

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

2023-12-30 12:24:36 543

空空如也

空空如也

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

TA关注的人

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