自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C/C++动态内存管理

1.new的原理 :调用operator new函数申请空间在申请的空间上执行构造函数,完成对象的构造2.delete的原理:在空间上执行析构函数,完成对象中资源的清理工作调用operator delete函数释放对象的空间3.new T[]的原理:调用operator new[]函数,在operator new[]中实际调用operator new函数完成N个对象空间的申请在申请的空间上执行N次构造函数4.delete[]的原理。

2024-07-15 12:21:42 609

原创 类和对象(下)

return dd1;return ptr;private:D(){}把类的构造函数限定为私有就可以避免在类外通过其他方式创建函数。限定为私有后,想在类外创建函数,就可以使用静态成员函数来实现,因为静态成员函数通过类域和访问限定符就可以访问到。

2024-07-15 11:29:33 734

原创 类和对象(中)---六个默认成员函数

1. 拷⻉构造函数是构造函数的⼀个重载2. 拷⻉构造函数的参数只有⼀个且必须是类类型对象的引用,使⽤传值方式编译器直接报错,因为语法逻辑上会。

2024-07-11 21:50:51 1012

原创 类和对象(上)

1.class为类的关键字+类的名字+{},{}为类的主体,类的定义结束后必须加分号。类的内容包括:类中变量称为类的属性或类的成员变量,类中函数称为类的方法或类的成员函数2.为了区分成员变量,会在成员变量前面加上特殊标符,如_或m,这个C++没有强制要求,具体看使用需求3.C++中struct也可以定义类,并且C++兼容struct的用法,同时将struct升级为类,最明显的变化是struct中可以定义成员函数4.定义在类中的成员函数某认为内联函数。

2024-07-10 10:47:02 678

原创 C++入门

一、C++关键字(C98)C++总计有63个关键字二、命名空间在C/C++中,变量、函数和类都是大量存在的,这些变量、函数和类的名称都将存在于全局作用域中,可能会导致很多冲突,比如展开头文件的时候,标准库包含的关键字可能会与我们所定义的类型、变量、函数产生重名冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题。2.1命名空间的定义定义命名空间,需要使用关键字namespace,后面跟上命名空间的名字,然后接

2024-07-07 15:00:06 888

原创 二叉树的遍历(递归思想)

计算二叉树第k层的节点个数,由于我们无法直接找到第k层的位置,所以要采用相对位置的思想,即根节点所在的位置为第k层,递归访问左右子树,每访问一次k--,直到k=1,就找到了我们实际要的第k层,如果此时遇到的节点不为NULL就返回1,遇到NULL就返回0。二叉树的层序遍历采用队列的方式实现,根节点入队,出队时带入它的子节点入队(左孩子先入队,右孩子后入队),依次出队列。采用遍历的思想,遍历树的每一个节点,如果遍历过程中找到目标节点就返回节点指针,如果遍历结束后仍然没有找到目标节点就返回NULL。

2024-07-06 19:34:05 884

原创 堆的调整和堆的TopK问题

如果有一个关键码的集合K,把它的所有元素按完全二叉树的顺序存储方式存储 在一个一维数组中,并满足,则称为小堆(或大堆)。将根节点最大的堆,且每个父节点都大于等于他的左右孩子叫做最大堆或大根堆,根节点最小的堆,且每个父节点都小于等于左右孩子叫做最小堆或小根堆。本文都以大堆为例。

2024-07-04 18:16:05 651

原创 九大排序--C语言

一、直接插入排序1.1基本思想把待排序的元素与前n-1个有序元素比较,使得插入元素后的n个元素有序,按照此法对所有元素进行插入,直到得到一个新的有序序列2.2代码实现void InsertSort(int* a, int n){ //多趟排序 for (int i = 1; i < n; i++) { //单趟排序,在有序区间[0,end]内排序,使数组保持有序 int end = i - 1; int temp = a[end + 1]; while

2024-07-03 00:31:54 923 1

原创 栈和队列 (含环形队列、队列实现栈、栈实现队列)

栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO)的原则。压栈push:栈的插入操作叫做进栈压栈入栈,入数据在栈顶。出栈pop:栈的删除操作叫做出栈。出数据也在栈顶。栈的实现一般可以使用数组或者链表实现,相对而言数组的结构实现更优一些。因为数组在尾上插入数据的 代价比较小。top保存栈顶的下一个位置,capacity保存当前数组容量。

2024-06-23 23:10:11 653 1

原创 单链表详解

第三,如果是多个节点,不能直接删除最后一个节点,否则就上一个节点就找不到下一个节点了,存储的就是一个野指针,所以必需先保存上一个节点的信息,再删除最后一个节点,最后将倒数第二个节点指向的节点置空。该种写法是tail向后找到尾节点的下一个空节点并赋值,因为原尾节点要存储新尾节点的地址,该种写法改变的是tail所指向的节点,并没有改变原尾节点内存储的下一个节点的地址,即没有将原尾节点和新尾节点链接起来。链表的头删不能直接删除头节点,不然就会找不到下一个结点了,先保存头节点的信息,在令头指针指向第二个节点。

2024-06-14 22:52:11 1018

原创 三子棋

2.1要用代码实现三子棋,我们可以从两个方面入手,一是游戏的整体逻辑,二是游戏的实现逻辑即游戏的主体。创建游戏菜单,1.开始游戏,0.退出游戏,其他输入重新进行选择,我们用while循环来实现这一功能。玩家下棋要注意:所下位置是否在合法范围内,所下位置是否为空,若都不满足,重新输入。2.2游戏的整体逻辑我们创建game.h,game.c,test.c来分模块实现。电脑下棋要在主函数里面使用随机数生成种子srand(),保证随机数的生成起点。若返回为'C',则游戏继续。若返回为'o',则电脑赢。

2024-05-04 10:08:07 137

原创 汉诺塔的实现

在A杆从上而下、由小到大放有一定数量的盘子,目标是把A杆上的盘子全部移到C杆上,并保持原有的顺序,每次仅能移动一个盘子且在移动过程中三根杆子上都始终保持大盘在下小盘在上,操作过程中盘子可以任意放在一个杆子上。

2024-05-01 21:03:59 381

原创 直接插入排序

num来到了第四个元素7,e=num-1(3)指向7,7比9小,则9向后移动一格,7插入到9之前,e向前移动(2)指向8,7比8小,则8向后移动一格,7插入到8之前,e向前移动(1)指向5,7比5大,不插入元素,break跳出循环,flag==1打印第二轮排序的结果。如图,当前num指向4,e指向5,4比5小,则5向后移动一格,4插入到5的前面,即arr[e+1]=arr[e],e向前移动,num(e-1)所指向的值就是待插入元素,第一轮排序结束。=1,避免重复打印第一轮排序的结果。

2024-04-29 18:36:28 403

空空如也

空空如也

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

TA关注的人

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