自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++——string的使用

可以将字符串内容清空,使之变成空串,改变size(变为0),不改变capacity。

2024-05-09 16:20:20 974

原创 排序3——C语言

让每一个数都减去最小值,那么如果有负数,减去最小值(也是负数,可能是本身)之后的值肯定大于等于0,就可以满足数组的下标了。将序列分割,若子区间无序,对子区间再分割,直至子区间有序(只有一个数时)再进行合并(相当于合并两个有序数组)。不稳定,例子如下图,时间复杂度O(N*logN)空间复杂度O(logN)不稳定,例子如下图,时间复杂度O(N*logN)空间复杂度O(1)归并排序的缺点,空间复杂度为O(N),即额外需要一块辅助空间。不稳定,例子如下图,时间复杂度O(N^2)空间复杂度O(1)

2024-04-24 16:38:24 1102

原创 排序2——C语言

交换排序的基本思想:所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置。交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。

2024-04-23 16:06:31 701

原创 C++——类和对象练习(日期类)

对日期类进行一个完善,可以帮助我们理解六个默认成员函数,这里选择全部显式实现,包括构造函数,运算符重载,赋值重载等。对有之前的知识点的提示,以及注意事项,这里采用声明和定义分离的形式,下面代码放的全部是定义,除非必要说明。在最后会有完整的代码。包括头文件和源文件内的。

2024-04-22 20:29:00 768

原创 C++——初识模板

之前实现的数据结构,比如栈,我们为了便于修改存储的数据类型,通常使用typedef来重定义数据类型,但是这样有一个缺陷,会导致我们定义的栈存储的都是一种数据,如果同时需要两个栈,一个存储int,一个存储自定义类型,那么typedef就不管用了。比如:当用int类型使用函数模板时,编译器通过对实参类型的推演,将T确定为int类型,然后产生一份专门处理int类型的代码,对于字符类型也是如此。概念:函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型的版本。

2024-04-22 16:27:09 989

原创 C/C++内存管理

对于用法上,建议不要混用,即malloc出来的空间就用free释放,new出来的空间就用delete释放。是系统提供的全局函数,new在底层调用operator new全局函数来申请空间,delete在底层通过operator delete全局函数来释放空间。operator new内部是通过malloc来申请空间的,operator delete内部是通过free来释放空间的。先在空间上执行析构函数,然后完成对象中资源的清理工作,通过调用operator delete函数释放对象的空间。

2024-04-21 16:38:07 930

原创 C++——类于对象(三)

定义时不添加static关键字,类中只是声明。类的静态成员可以用。

2024-04-20 18:57:28 564

原创 C++——类与对象(二)

以上的六个成员函数,我们不显式实现,编译器会自动生成,如果我们显式实现了,编译器就不会生成了。拷贝构造函数和赋值重载需要注意浅拷贝的问题。对于const成员函数,如果在函数内部没有对*this进行修改,那么建议加const。介绍了这六个函数,我们会对日期类和栈进行完善,加深对这六个默认成员函数的理解。本篇就到这里咯。

2024-04-20 12:22:57 815

原创 C++——入门基础语法(2)

这是因为函数展开后就没有函数地址,会导致链接时找不到函数,产生链接错误。如下。

2024-04-16 16:57:24 755

原创 排序1——C语言

排序在生活中很常见,比如在网购时,按价格排序,按好评数排序,点餐时,按评分排序等等。而排序有快和慢,快的排序效率高,慢的排序效率低,需要的时间也多。下面就一一介绍各种排序。介绍排序算法时,统一以为例。

2024-04-13 16:39:17 929

原创 C++——类与对象(一)

和C语言中的结构体一样,不同的是。

2024-04-13 14:12:41 709

原创 数据结构OJ题——栈和队列

假设入队数据1,2,3,4,5由于需要实现栈,那么出数据的顺序需要是5,4,3,2,1,效仿上一题,将数据倒入到另一个队列后,发现再出数据还是1,2,3,4,5,因此这个方法不适用了。需要出的数据是5,所以可以考虑把1,2,3,4倒入到另一个队列,再把5出出去。把1,2,3倒回来,把4再出出去,循环就可以实现出数据的顺序为5,4,3,2,1了。假设入队的顺序是1,2,3,4,5,那么出队的顺序也需要是1,2,3,4,5。此时我们从stack2中出数据会发现,出队的顺序变成了1,2,3,4,5。

2024-04-10 15:32:27 1131

原创 数据结构算法题 2(力扣)——链表

fast指针先走k步,之后和慢指针以相同速度走,快指针为NULL时,慢指针指向的结点就是倒数第k个结点。本题需要注意k的值,k可能很大,比如远大于结点的个数,当k等于结点的个数时,所有结点向右移动k个位置相当于不用移动,因此需要对k进行求余操作。指针含义:cur——指向新链表的头,prev——cur的前一个结点,tail——指向最后一个结点。为了便于将结点链接到大小链表中,采用带头结点的方式解决,可以避免大小链表为空或者不为空的讨论。当遍历完链表后,可能出现链表成环的情况,因此需要将大链表的尾指针置空。

2024-04-08 17:49:38 1022

原创 数据结构——堆的应用

堆结构主要有两个应用:1、堆排序 2、topK问题。

2024-04-06 16:17:46 1050

原创 数据结构二叉树链式存储

的结构体。

2024-04-06 15:01:05 750 1

原创 数据结构算法题(力扣)——链表

以下题目建议大家先自己动手练习,再看题解代码。这里只提供一种做法,可能不是最优解。

2024-04-03 20:56:54 890 1

原创 数据结构二叉树顺序存储——堆

完全二叉树中,下标为n-1的双亲结点的下标为[ ( n - 1 ) -1 ] / 2 即。

2024-04-02 17:00:38 1048 1

原创 C++——入门基础语法

C语言作为最基础最底层的语言,也是我们学习的第一门编程语言,但是它有许多不足,比如命名冲突等,C++很好的解决了这些不足。C++是在C语言的基础上不断增加新的语法,不断的加东西进而产生的一门语言,因此C++是源于C语言的。

2024-03-31 16:28:34 728 1

原创 数据结构——树

树是一种非线性的数据结构,是由有限个结点组成的具有层次关系的集合,形状看起来像一棵倒挂的树,因此叫做树。树具有一个特殊的结点,叫做根节点,该结点没有前驱结点。除根节点外,其他结点有且仅有一个前驱结点,有零个或者多个后继结点。这些结点又被分为若干颗树,每棵树没有交集,每棵树又被分为根节点和子树。因此,树是递归定义的。如下图,就是一棵树。

2024-03-29 17:25:41 867 1

原创 数据结构——队列

假如只使用一个头指针指向队头,那么每次插入数据时都需要遍历链表找到尾结点,效率低下,因此选择增加一个尾指针,指向尾结点。同样分为两种情况,队列只有一个结点和多于一个结点。实现队列时可以选择数组或者链表,如果选择数组实现,那么在删除数据时会造成数据的挪动,效率低下,因此这里选择使用链表实现队列。关于队列就介绍这些了,学会这么多数据结构后,需要多多的练手,保持手感,不要让自己手生,因此后面会带大家写一些题目。队列只允许在一端进行数据的插入,在另一端进行数据的删除,插入数据的一端叫队尾,删除数据的一端叫队头。

2024-03-26 15:32:14 929 1

原创 数据结构——双向链表

尾结点的下一个是头结点,头结点的前一个是尾结点。对于尾插,可以看成在尾结点后插入,也可以看成在头结点(head)前插入,因为head的前驱结点就是尾。next是一个地址,=是赋值,改变指针的指向就是修改结构体内指针的值,也就是修改地址。初始化双链表就是开辟一个头结点并返回,只有一个结点时,链表的前一个和后一个都是自己。pos是一个结构体指针,插入是在pos前插入,删除就直接删除pos位置的结点。头删,即删除第一个结点,也就是头结点的下一个,但是不包括头结点。销毁时,遍历链表释放其余结点后,在释放头结点。

2024-03-24 18:30:30 711 1

原创 数据结构——栈

入栈非常简单,因为top是指向栈顶位置的下一个,那么入栈就是将数据放在top处,在++top即可。栈是一种特殊的线性表,只允许在栈的一端入数据和出数据,这一端称为栈顶,另一端称为栈底。栈的一些操作包括入栈,出栈,获取栈顶元素,获取栈的大小,判空,初始化和销毁等。在初始化时,top的值可以为-1或者0,如果是-1,说明top位置处是栈顶。比如入一个数据就出一个数据,那么出栈顺序就变成了1,2,3,4,5。出栈顺序是5,4,3,2,1。但不一定就是5,4,3,2,1。入数据时称为入栈或进栈或压栈,出数据时(

2024-03-23 16:25:51 275 1

原创 数据结构——链表

链表是一种物理结构上非连续,非顺序的存储结构。数据元素的顺序是通过链表中的指针链接起来的。顺序表在插入数据时,可能会扩容,造成一定的消耗,如果新插入的数据量小,也会造成一定的空间浪费。链表可以很好的解决这两个问题。但链表也有其他不足。

2024-03-17 18:14:12 441 1

原创 数据结构——顺序表

顺序表分为动态顺序表和静态顺序表,静态顺序表底层是一个定长数组,不方便进行增加。任意位置的插入和删除需要注意插入和删除的位置需要合理,和头插,头删类似。用的数据结构,而顺序表就是一种线性表,常见线性表还有链表,栈,队列,字符串等。我们需要知道这个数组能存的数据最多是多少,还需要知道当前存了多少数据。插入分为头插和尾插,尾插比较容易实现,只需要根据下标进行插入即可。头插需要将数据向后移动一位,在进行插入,因此头插的消耗比较大。头插时,需要从最后一个数据开始,依次向后移动数据。查找数据,只需要依次比对。

2024-02-29 20:26:57 382

原创 C实现贪吃蛇

Windows 这个多作业系统除了协调应用程序的执行、分配内存、管理资源之外, 它同时也是⼀个很大的服务中心,调用这个服务中心的各种服务(每⼀种服务就是⼀个函数),可以帮应用程序达到开启视窗、描绘图形、使用周边设备等目的,由于这些函数服务的对象是应用程序(Application), 所以便称之为 Application Programming Interface,简称 API 函数。要实现这样的一个小游戏,需要掌握结构体,指针,链表,函数,分支循环语句,枚举等,绝大部分的C语言知识都运用到了。

2024-02-24 17:41:51 819

原创 【部分C语言函数解析】

大家可以在下面这个网站上学习C以及C++,里面内容很多,很详细。使用下面的函数需要包含一个头文件。

2024-02-15 14:57:23 843 1

原创 简易扫雷(仅用函数和数组实现)

扫雷是一款比较传统的游戏,游戏规则是,选择一个格子,如果不是雷,则安全,继续寻找其他雷,如果是雷,游戏结束。当找到全部的雷时,游戏则通过。如上,游戏失败,点击的格子中的数字代表周围的格子一共有那么多个雷。中间的2代表周围有2个雷中间的1代表周围有1个雷,根据最中间的1,得到还未点击的格子就一定是雷。这里仅用函数和数组外加一些细小知识,带大家实现一个简易的扫雷,使大家学到的知识得到运用。

2024-01-28 13:51:31 796 1

原创 指针解析(3)

由于(二)的内容较少也比较简单,这里就不带大家复习了,直接进入正题。

2023-12-19 16:45:30 838 1

原创 指针解析(2)

上节我们介绍了创建指针变量和指针变量类型及其意义,指针加减整数和指针减指针的内容,还有一个小小的应用。指针变量是存储地址的变量,需要用到&符号,名叫取地址操作符,创建指针变量时需要给定变量类型变量名,和赋初值,如果不赋初值会导致一个野指针的问题,关于野指针,本节会介绍到。//整型指针变量//字符指针变量,不知道赋值什么时,可以给一个NULL指针//数组指针,//函数指针return 0;

2023-12-17 16:08:45 928 1

原创 关于大小端的介绍

对于0x11223300这个数来说,11是数值较大的一端,也就是通常说的高位,00这一端是低位,数值大的存在了高地址处,数值小的存在了低地址处,所以我的电脑是以小端字节序存储。a里保存了一个16进制的数字11223344,将a的地址取出,强转为char*类型,保存在ch这个指针变量,对ch进行解引用并赋值为0,最后以16进制的形式打印a的值,这段代码就解读完了。可以看到,最后的44改为了00,通过指针(1)的学习,知道了,char*类型的指针解引用可以访问一个字节。

2023-12-10 15:55:45 337 1

原创 指针解析(1)

内存是被划分为一个一个小的内存单元的,每个内存单元大小是一个字节,而每个内存单元又有一个编号,这个编号就是地址。而指针就是存储这个地址的,指针可以认为是地址,通常说的指针是指针变量。

2023-12-09 16:31:27 958 1

原创 值的集合——数组

(p+i)中的*代表解引用,表示通过这个指针找到指针指向的这个数据。在依次循环,打印数据。

2023-12-03 14:46:12 784 1

原创 C语言 分支和循环

在C语言里,支持三种结构,分别是选择,顺序和循环结构,顺序结构简单明了,一步步的从上到下,从左到右走完全程即可。分支和循环结构就比较复杂,接下来将介绍一下这两种结构。

2023-12-02 15:59:37 814

原创 结构体小剖析

在C语言中有很多的内置的数据类型,方便我们去使用,比如整形,字符型,浮点型等等,还有短整型,长整型,就不一一列举了。但是创建这些类型的变量,变量的类型就只能是它们,那有没有一种数据类型,可以存储不同的数据呢?当然有的,就是结构体了。int i = 0;char c = 0;

2023-12-02 11:52:58 752

空空如也

空空如也

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

TA关注的人

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