- 博客(30)
- 收藏
- 关注
原创 c++模板初阶
函数模板的定义以关键字template开始,后跟一个模板参数列表,该列表用尖括号<>括起来。模板参数列表可以包含一个或多个模板参数。a : b;类模板的定义以template关键字开始,后跟模板参数列表,然后是类的定义。
2024-12-22 21:15:54
424
原创 Linux重定向 管道命令 环境变量PATH
Linux目录配置标准FHS(Filesystem Hierarchy Standard)定义了Linux系统中的文件和目录结构标准。
2024-12-15 22:14:13
641
原创 C/C++内存管理
在C和C++中,程序的内存分布通常包括以下几个部分: 在C++中, 和 是用于动态内存分配和释放的底层操作符函数。它们是C++语言提供的全局函数,可以被重载以改变默认的内存分配行为。 是要分配的内存字节数。 返回值是一个指向分配的内存的指针,如果分配失败,则抛出 异常。 operator delete 计算所需内存大小:调用 operator new:构造对象:返回指针: delete 的实现原理 调用析构函数:调用 operator delete:
2024-12-15 21:55:29
1041
原创 linux的常见指令
Linux 是一种自由和开放源代码的类UNIX操作系统内核。它是由林纳斯·托瓦兹(Linus Torvalds)于1991年首次发布的。Linux不是一套完整的操作系统,而是操作系统的核心,通常与GNU工具和库一起使用,构成完整的操作系统。
2024-12-08 21:21:19
715
原创 c++类和对象(2)
在某些情况下,需要自定义拷贝构造函数来执行深拷贝,以确保每个对象都有自己独立的副本。// 自定义拷贝构造函数// 执行深拷贝// 释放动态分配的内存。
2024-12-01 22:18:11
983
9
原创 c++的类和对象(1)
访问修饰符public:公有成员可以被类的外部访问。protected:保护成员可以被类自身、派生类以及友元函数访问。private:私有成员只能被类自身访问。成员变量:类中定义的数据。成员函数:类中定义的操作数据的函数。构造函数:用于初始化类的对象。析构函数:用于在对象生命周期结束时执行清理工作。private:// 私有成员变量int age;public:// 构造函数// 成员函数,设置姓名name = n;// 成员函数,获取姓名// 成员函数,设置年龄age = a。
2024-11-24 19:13:05
1492
15
原创 c++(入门)
引用是另一个变量的别名,它在声明时必须被初始化,并且一旦初始化后,它就始终引用那个变量。内联函数是一种特殊的函数,它在编译时会在每个调用点处展开函数体,从而避免了函数调用的开销。但是,是否真正内联由编译器决定。
2024-11-24 18:47:57
1089
2
原创 认识c++(c++入门)
你可以使用namespace关键字来定义一个命名空间。在这个例子中,是命名空间的名称,var和func是这个命名空间内的变量和函数。在函数原型中,你可以通过在参数声明后赋值来指定缺省参数// 函数声明时指定默认参数// 使用默认参数// 只提供第一个参数// 提供所有参数return 0;在上面的例子中,printInfo函数有两个参数,name和age。name的默认值是字符串"Unknown",而age的默认值是-1。注意事项缺省参数必须从右到左提供。
2024-11-17 21:16:33
1704
9
原创 数据结构的归并排序(c语言版)
与简单的冒泡排序或选择排序相比,归并排序的时间复杂度为O(nlogn),这使它能够高效地处理大规模的数据集。通过不断地将数组拆分成更小的子数组,直至子数组只有一个元素,然后再将这些有序的子数组合并起来,最终得到一个有序的数组。稳定排序:归并排序是一种稳定的排序算法,也就是说,当两个相等的元素出现时,它们在输出序列中的相对顺序与输入序列中的相对顺序一致。时间复杂度稳定:归并排序的时间复杂度为O(nlogn),不管输入数据的初始状态如何,时间复杂度都是稳定的。归并排序是一种高效的排序算法,它采用了分治的思想。
2024-06-05 18:38:39
2222
65
原创 数据结构的快速排序(c语言版)
快速排序是一种常用的排序算法,它是基于分治策略的一种高效排序算法。2.快排的适用场景大规模数据排序:快速排序的平均时间复杂度为O(nlogn),在处理大规模数据时比其他算法如冒泡排序、插入排序更加高效。内存受限的环境:快速排序是一种就地排序算法,不需要额外的存储空间,这在内存受限的环境(如嵌入式系统)中更有优势。数据较为随机分布:快速排序的性能最佳情况发生在数据较为随机分布的情况下。如果数据已经基本有序或完全逆序,则会退化为O(n^2)的时间复杂度。
2024-05-31 22:04:52
3580
54
原创 数据结构的希尔排序(c语言版)
希尔排序是一种基于插入排序算法的优化排序方法。它的基本思想如下:选择一个增量序列 t1,t2,......,tk,其中 ti > tj, 当 i < j,并且 tk = 1。2.希尔排序的优点时间复杂度较低。希尔排序的时间复杂度一般在 O(n^1.25) 和 O(n^1.5) 之间,优于简单的插入排序。在部分有序的数组中效率很高。希尔排序通过分组插入排序来利用数据的局部有序性,可以有效地加快排序速度。空间复杂度低,只需要常量级的额外空间。代码实现相对简单,易于理解和编码。3.希尔排序的缺点。
2024-05-28 21:47:08
3661
57
原创 数据结构的直接插入排序(C语言版)
如果待排序数组基本有序,直接插入排序的效率会很高,但如果数组越乱,排序效率就会越低。假设前 i-1 个元素已经有序,现在要将第 i 个元素插入到前 i-1 个有序元素中,使得前 i 个元素也有序。维护数组中元素的相对顺序,即相等元素的相对位置不会改变。找到合适的位置后,将第 i 个元素插入到该位置,同时需要将位置之后的元素都向后移动一位。每次从未排序部分取出一个元素,将其插入到已排序部分的合适位置,使得已排序部分保持有序。对于部分有序的数组,直接插入排序的效率会很高,因为需要移动的元素较少。
2024-05-27 14:06:54
1623
35
原创 数据结构堆排序(c语言版)
在构建好堆之后,堆排序会进行反复的交换和调整操作,将堆顶元素(最大值或最小值)与堆的最后一个元素交换,然后缩小堆的规模。堆排序的优势是能够在一个数组上就地完成排序,不需要额外的空间。堆排序是一种原地排序算法,不需要额外的内存空间来辅助排序,而是直接在原数组上进行操作。大顶堆的根节点是数组中的最大值,小顶堆的根节点是数组中的最小值。堆排序的主要功能是对一个给定的数组进行升序或降序排序。大顶堆的特点是根节点的值大于或等于其左右子节点的值。堆排序的时间复杂度为O(nlogn),这使它成为高效的通用排序算法之一。
2024-05-18 21:23:27
1961
58
原创 数据结构的二叉树(c语言版)
查找:二叉搜索树(BST)是一种特殊的二叉树,它的左子节点的值小于等于父节点,右子节点的值大于等于父节点。通过比较节点的值,可以快速确定目标节点的位置,从而实现快速查找。二叉树的一个重要概念是根节点,它是树的起始节点,其他节点通过边与根节点相连。另外,每个节点除了子节点的连接外,还可以有一个指向父节点的连接,这样就形成了一个双向连接的二叉树。完全二叉树,除了最后一层之外,其他层的节点都必须是满的,并且最后一层的节点都靠左排列。二叉树的特点是每个节点最多有两个子节点,而且左子节点和右子节点的位置是固定的。
2024-05-13 10:24:53
1907
50
原创 数据结构的堆(c语言版)
array:一个指向整型数组的指针,用于存储堆中的元素。capacity:一个整数,表示堆的容量,即array数组的最大长度。size:一个整数,表示当前堆中的元素个数,即array数组中实际存储的元素数量。int* array;// 存储堆元素的数组// 堆的容量int size;// 堆中当前元素的个数} Heap;
2024-05-09 19:16:57
1872
38
原创 数据结构的队列(c语言版)
Queueelements:类型为int*的指针,用于存储队列中的元素。通常情况下,可以通过动态内存分配来为该指针分配足够的内存空间,以存储队列的元素。front:整型变量,表示队列头部的索引。它指向队列中的第一个元素。rear:整型变量,表示队列尾部的索引。它指向队列中最后一个元素。maxSize:整型变量,表示队列的最大容量。它用于限制队列中元素的数量,防止队列溢出。// 存储元素的数组int front;// 队列头部索引int rear;// 队列尾部索引// 队列的最大容量。
2024-05-02 15:29:34
1919
28
原创 数据结构中的栈(C语言版)
被移除的元素是最后一个入栈的元素,即栈顶元素。出栈操作会改变栈的结构,并返回被移除的元素。对于基于数组实现的栈,如果数组已满,即栈已满,该函数返回真;获取栈顶元素:获取栈顶的元素,但不对栈进行修改。如果栈中没有元素,即栈为空,该函数返回真;函数检查栈是否为空,如果为空,则打印错误信息并返回-1;函数检查栈是否为空,如果为空,则打印错误信息并返回-1;3.栈中的元素没有编号或索引,只有栈顶指针来指示栈的当前位置。1.元素的插入和删除操作只能在栈的一端进行,该端被称为栈顶。等于-1,表示栈为空,返回1;
2024-04-30 16:53:34
1795
15
原创 C语言的单链表
单链表是一种常见的数据结构,用于存储一系列的元素。它由一个节点的序列构成,每个节点包含一个数据元素和一个指向下一个节点的指针(或链接)。单链表中的节点按照顺序链接在一起,形成一个链式结构。
2024-04-15 20:17:52
1566
17
原创 通讯录项目(用c语言实现)
它是一种电子化的地址簿,用于记录和管理个人、机构或组织的联系方式,如姓名、电话号码、电子邮件地址和邮寄地址等。通讯录的目的是方便用户在需要时查找和联系他人。通讯录通常以列表或表格的形式呈现,每个条目代表一个联系人。用户可以根据联系人的姓名、公司、职位或其他标识符来组织和排序通讯录。随着技术的发展,通讯录也可以与其他应用程序、设备或云服务同步,以确保联系人信息的备份和共享。通讯录在个人生活和商业环境中都非常有用。个人可以使用通讯录存储家庭成员、朋友、同事和其他重要联系人的信息,以便随时与他们保持联系。
2024-04-12 15:08:46
1216
16
原创 C语言的顺序表详解
首先,定义了一个常量MAX_SIZE表示顺序表的最大容量,然后使用结构体SeqList定义了顺序表的结构,包括一个整型数组data用于存储元素,以及一个整型变量length表示当前顺序表中的元素个数。int length;} SeqList;
2024-04-11 13:31:36
1680
14
原创 C语言的编译和链接以及预处理详解
预定义符号:C语言中有一些预定义的符号,它们提供了一些常用的信息和功能。例如,__LINE__表示当前代码行号,__FILE__表示当前源文件名,__DATE__表示当前编译日期等。这些符号在预处理阶段被替换为相应的值。__FILE__ //进⾏编译的源⽂件__LINE__ //⽂件当前的⾏号__DATE__ //⽂件被编译的⽇期__TIME__ //⽂件被编译的时间__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义#define定义常量:使用#define。
2024-04-02 21:44:59
1685
9
原创 C语言的文件操作
文件是计算机中存储数据的一种方式,它是一组按照特定格式组织的数据的集合。文件可以包含文本、图像、音频、视频等各种类型的数据。在计算机系统中,文件是存储在存储介质(如硬盘、固态硬盘、光盘等)上的一段连续或间断的数据。每个文件都有一个唯一的名称,用于在文件系统中进行标识和访问。文件可以用于多种目的,例如:存储和维护文本数据:文本文件包含可由文本编辑器打开和编辑的字符数据。这些文件通常用于存储配置信息、日志文件、源代码文件等。
2024-04-01 20:17:59
1168
4
原创 C语言的结构体详解
结构体的定义使用struct关键字,通常放在函数外部或全局作用域中。在上述示例中,我们定义了一个名为Personname(字符数组)、age(整数)和height(浮点数)。可以使用已定义的结构体创建变量,并对其进行初始化。在上述示例中,我们声明了两个结构体变量person1和person2,并对person2进行了初始化。使用点操作符()来访问结构体变量的成员。上述示例中,我们使用点操作符访问person2结构体变量的成员,并将它们打印出来。结构体作为函数参数:可以将结构体作为函数的参数传递。
2024-03-29 21:58:18
1007
7
原创 库函数的模拟实现(详解)
strlen函数用于计算字符串的长度,即字符串中字符的个数,不包括字符串结尾的空字符 '\0'。它接受一个指向字符串开头的指针,并通过遍历字符串的每个字符来确定长度。它返回一个size_t类型的值,表示字符串的长度。
2024-03-27 22:06:46
989
4
原创 扫雷(基础版)
扫雷是一款单人益智游戏,玩家需要通过翻开方块来避免触雷并揭示所有的非雷方块。以下是扫雷的基本规则:玩家的目标是揭示所有非雷方块,而不触雷。如果玩家成功地揭示了所有非雷方块,游戏胜利。
2023-12-05 17:53:05
660
12
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人