- 博客(30)
- 收藏
- 关注
原创 【Linux我做主】yum与vim详解:一行命令搞定简单配置vim
本文介绍Linux中的包管理工具yum和文本编辑器vim,带你一行命令配置vim。
2025-03-17 19:42:05
1144
23
原创 【Linux我做主】基础命令完全指南上篇
本文介绍`Linux系统`的基本知识和一些常见命令的基本使用,命令的更多用法需结合man手册进行查询。
2025-03-15 19:24:48
1794
26
原创 C++类和对象实战:实现一个日期类
本文通过实现一个日期类,综合运用构造函数、运算符重载、友元函数等C++特性,帮助读者巩固面向对象编程知识。我们将实现日期的基本操作,包括日期比较、日期加减、流输入输出等功能。
2025-02-22 14:24:08
650
21
原创 C++类和对象进阶:初始化列表和static成员深度详解
本文深度详解关于C++构造函数的初始化列表和C++类中的static成员,其中static成员包含static成员变量和static成员函数,以及介绍static的相关实践场景。
2025-02-22 14:22:12
953
9
原创 C++类和对象进阶:const及取地址重载深度解析
本文将介绍const成员函数和C++6个默认成员函数中的最后两个,取地址重载操作符重载和const取地址重载。
2025-02-17 14:28:05
908
11
原创 C++类和对象进阶:运算符重载深度详解
在C++中,运算符重载允许我们为自定义类型赋予与内置类型相似的操作方式,极大提升了代码的可读性和灵活性。本文将深入探讨运算符重载的规则与实现,并重点分析==默认成员函数之一的赋值运算符重载函数。
2025-02-13 18:19:00
1034
12
原创 C++11特性:指针空值 nullptr
在 C++11 中,`nullptr` 被引入为一种新的空指针类型,目的是替代传统的 `NULL` 宏,以便更清晰和更安全地表示空指针。`nullptr` 不仅解决了 `NULL` 可能引发的歧义,还增加了对类型安全的支持。本文将详细介绍 `nullptr` 的背景、特性和使用场景。
2025-02-07 10:49:33
708
8
原创 C++ 支持重载的原理
本文探讨了 C++ 支持函数重载的原理,重点介绍了名称修饰(Name Mangling)如何实现同名函数的区分。编译器通过在函数名中添加参数类型信息来区分不同参数类型的同名函数,从而实现重载功能。文章首先介绍了程序的生成过程,包括预处理、编译、汇编和链接四个步骤,阐明了链接器如何通过符号表解决不同源文件间的函数调用问题。
2025-02-05 20:25:22
917
1
原创 C++函数进阶:缺省参数、重载与内联函数
本文将深入探讨C++中函数的三个重要特性:缺省参数、函数重载和内联函数,揭秘它们的工作原理与最佳实践。
2025-02-05 17:35:05
978
1
原创 树及其二叉树结构阐述(C语言)
通常的方法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左孩子和右孩子所在的链结点的存储地址。可以看出,该结构中我们定义了一个结构,结构内包含两个指针和一个数据位。这样,每个结点内只需定义两个指针,就可以表示含有无穷多个节点的树了。它既节省空间,又方便用数组存储,是很多算法(如堆排序)的基础结构。以上即为树相关的所有概念,其中重点需要记忆的概念我已经用黄色重点标出,其余概念能够辨识即可。提前剧透一下,二叉树的顺序存储也就成为了堆,二叉树的链式存储采用的是二叉链表。
2025-02-04 12:59:18
927
1
原创 顺序表和链表对比
单链表适合需要频繁插入和删除、数据量不确定的场景,尤其是动态链表数据结构(如队列、栈)。顺序表适合数据量较小、访问较频繁、数据不经常变动的场景(如静态集合或数组)。选择哪个数据结构取决于应用的具体需求,例如,如果需要频繁地插入和删除数据,链表可能更合适;如果需要频繁地访问数据,顺序表会更加高效。
2025-01-26 16:09:33
667
1
原创 单链表C语言实现
SListNode;以上定义了单链表的结点,结点内存储两个数据。一个数据是我们实际要存储的数据,另一个是一个指针变量,是指向结构体的指针,存储下一个结点的地址。链表的链式结构正是通过指针来实现的。如图所示。设置一个指针变量存储第一个结点的地址每个结点中,存储了数据 和 下一个结点的地址地址由结构体指针来存储我们可以访问结构体中的指针来获取地址,实现对下一个结点的访问。若需频繁插入/删除、数据规模动态变化,且不需要随机访问(如实现 LRU 缓存、消息队列)。
2025-01-26 16:04:28
1106
2
原创 C++命名空间和流式IO
命名空间通过namespace关键字定义,后面接命名空间名称和一对大括号,括号内为命名空间的成员。// _rand是命名空间的名字,一般开发中是用项目名字做命名空间名。// 命名空间中可以定义变量 /函数 /类型int name;char ch;
2025-01-21 21:47:08
820
5
原创 数据结构之栈(C语言版)
栈:是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。栈顶:进行数据插入和删除操作的一端栈底:另一端称为栈底压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。栈中的数据元素遵守**后进先出LIFO(LastInFirstOut)**的原则。如图所示:栈也是一种常见的数据结构,其本质是特殊的线性表。本篇中,笔者将使用C语言,采用顺序表的形式来实现栈。并利用C语言实现的栈实现括号匹配。
2025-01-19 20:46:44
1061
1
原创 动态顺序表
4// 给顺序表一个初始大小//定义顺序表数据类型////静态顺序表 开少了不够用 开多了浪费//};//动态顺序表 动态扩容 开辟内存在堆区 没必要用柔性数组//动态数组的基地址int size;//有效数据个数 size是 最后一个元素的下一个位置的下标//空间容量}SeqList;此处阐释静态顺序表的劣势。静态顺序表开辟的空间是固定的,开辟空间过少,不够存储, 开辟空间过多, 造成空间的浪费。因此在实际使用的过程中,使用动态顺序表居多。
2024-12-01 12:40:18
1381
3
原创 动态顺序表(动态扩容)
10//默认最大长度//顺序表的最大容量int length;//顺序表的当前长度int* data;//指向动态分配数组的指针}SeqList;由于malloc函数返回的是所申请空间的地址,因此我们需要用指针来接受,还是那句话,为了方便起见,我们用 int* 来接收。
2024-07-31 18:19:05
1840
2
原创 静态顺序表
10//定义数组来存储数据int length;//length表示当前表的长度}Sqlist;在结构体中,我们声明了一个数组用来存放数据,为了方便起见,笔者将数组的数据类型规定成了 int , 实际上,顺序表中的元素可以是任何数据类型。我们将顺序表定义在结构体内,是为了更方便一点。因为这样我们不仅可以存储所有的数据,还可以补充存储关于顺序表的某些信息(视需求而定), 这些另外存储的信息可以帮助我们更好的操作顺序表(其他数据结构也是类似)。
2024-07-30 21:21:11
1378
6
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人