- 博客(35)
- 收藏
- 关注
原创 C++ 日期类的实现
本文展示了C++日期类的实现,包含三个文件:Date.h头文件定义Date类及其成员函数,Date.cpp实现具体功能,test.cpp进行测试。Date类支持日期比较、加减运算、输入输出等操作,通过运算符重载实现日期计算功能。关键实现包括:日期合法性检查、获取月份天数、各种运算符重载(比较、加减、自增自减等)以及流操作符重载。测试代码验证了日期运算、输入输出和地址运算符重载等功能。
2026-05-17 19:41:45
97
原创 数据结构--并查集
并查集是一种用于处理不相交集合的数据结构,支持查找、合并和判断集合关系等操作。本文通过学生分组示例说明并查集的工作原理:初始时每个元素自成一个集合,通过数组存储集合关系(负数表示根节点及其元素个数)。核心操作包括查找根节点、合并集合和路径压缩优化。代码实现展示了UnionFindSet类,包含Union、FindRoot、InSet等方法,其中FindRoot采用路径压缩提高效率,Union按集合大小合并优化性能。并查集适用于需要频繁查询和合并集合的场景,如社交网络中的好友关系处理。
2026-05-05 15:52:56
266
原创 C++ 类和对象(三)
本文主要介绍了C++面向对象编程中的几个重要概念: 构造函数补充:详细讲解了初始化列表的使用方法、注意事项以及与缺省值的配合使用; 类型转换:介绍了内置类型与类类型之间的隐式转换规则及explicit关键字的作用; static成员:说明静态成员变量和静态成员函数的特性及使用方法; 友元机制:阐述了友元函数和友元类的概念及其突破封装限制的特性; 内部类:解释内部类的定义、特性以及与外部类的关系; 匿名对象:介绍匿名对象的定义方式及其生命周期特点。文中还穿插了两个求1+2+...+n的算法实现示例
2026-04-27 15:28:24
388
原创 C++ 类和对象(二)
本文摘要:C++类中的默认成员函数包括构造函数、析构函数、拷贝构造函数、赋值运算符重载和取地址运算符重载。其中前四个最为重要。构造函数用于初始化对象,析构函数负责资源清理,拷贝构造函数处理对象拷贝,赋值运算符重载实现对象间赋值。这些函数若未显式定义,编译器会自动生成默认版本。对于包含资源管理的类(如动态内存),通常需要自定义这些函数。运算符重载允许自定义类类型对象的运算行为,const成员函数可保护对象不被修改。取地址运算符重载一般不需自定义。
2026-04-10 13:50:47
392
原创 Linux--进程控制
本文摘要:本文系统介绍了Linux进程管理的核心概念与技术,包括进程创建、进程终止、进程等待以及进程程序替换。通过详细分析fork函数的工作原理、进程退出码机制、父子进程通信方式,阐述了Linux进程管理的实现原理。文章还提供了一个自主实现的Shell解释器示例,展示了如何结合这些技术构建命令行解释器,包括命令解析、环境变量管理、内置命令处理和执行外部程序等功能。最后通过函数与进程的类比,总结了Linux进程间通信的基本模式。
2026-03-02 17:42:49
539
原创 C++ 类和对象(一)
本文介绍了C++类的核心概念,包括:1. 类定义格式、访问限定符(public/private)和类域作用域;2. 对象实例化过程及内存对齐规则;3. this指针的工作原理及其在成员函数调用中的作用;4. 通过栈的实现对比了C++面向对象与C语言面向过程的差异。重点阐述了C++通过类实现的封装特性,包括数据与方法的绑定、访问控制机制,以及this指针如何隐式传递对象地址。文章还通过测试题分析了空指针调用成员函数的行为差异,并指出成员函数存储在代码段而非对象中的内存优化设计。
2026-02-22 15:00:00
631
原创 数据结构--排序
本文系统介绍了常见排序算法及其实现。主要内容包括:1. 排序概念及应用场景;2. 主要排序算法实现:插入排序(直接插入、希尔)、选择排序(直接选择、堆)、交换排序(冒泡、快速)、归并非比较排序(计数)等;3. 算法特性分析:时间复杂度、空间复杂度及稳定性。重点阐述了快速排序的4种实现方法(hoare、挖坑、前后指针、非递归)及优化策略。最后对比分析了各算法的复杂度,其中快速排序和归并排序的时间复杂度最优为O(NlogN)。本文可作为排序算法的系统学习资料。
2026-02-17 22:56:54
894
原创 Linux基础开发工具--编译器gcc/g++
本文介绍了GCC编译器的完整编译过程及常用选项。主要包括四个阶段:预处理(-E)、编译(-S)、汇编(-c)和链接(-o),详细说明了各阶段的功能和转换过程。同时对比分析了静态链接与动态链接的区别,以及静态库(.a)和动态库(.so)的特点。文章还列举了GCC的其他常用选项,如生成调试信息(-g)、优化选项(-O0到-O3)、警告控制(-w/-Wall)等,为开发者提供了全面的GCC使用指南。
2026-02-10 13:13:18
602
原创 c++入门基础
本文介绍了C++基础语法特性,包括:1. 命名空间,用于解决命名冲突问题,支持嵌套定义和三种访问方式;2. C++输入输出流,比C语言的printf/scanf更智能;3. 缺省参数(默认参数)分为全缺省和半缺省;4. 函数重载;5. 引用(reference)作为变量别名,常用于传参和返回值优化;6. 内联函数(inline)替代宏函数,减少函数调用开销;7. nullptr关键字解决NULL在指针和整型之间的歧义问题。这些特性使C++在保持C语言兼容性的同时,提供了更安全高效的编程方式。
2026-02-03 22:53:24
590
原创 数据结构--链式结构二叉树
本文介绍了二叉树的存储结构和相关操作。首先阐述了二叉树的两种存储方式:顺序存储适合完全二叉树,链式存储通过左右指针连接节点。然后详细讲解了链式二叉树的实现方法,包括节点定义和创建过程。重点分析了二叉树的前序、中序和后序遍历规则,并给出递归实现代码。此外还介绍了计算节点个数、叶子节点个数、树高度等常见操作,以及层序遍历的实现方法。最后讨论了如何判断完全二叉树,通过队列实现层序遍历并进行空节点检测来完成判断。全文通过代码示例和图解详细说明了二叉树的各种操作实现。
2026-02-01 15:49:45
614
原创 Linux基础开发工具--yum和vim
本文介绍了Linux系统下的软件包管理器和Vim编辑器使用指南。软件包管理器部分详细讲解了yum/apt的基本操作,包括查看、安装、卸载软件包的方法及注意事项,并解释了软件源配置。Vim编辑器部分系统阐述了三种基本模式(命令、插入、底行)及其切换方式,重点讲解了命令模式下的光标移动、文本操作、复制粘贴等核心功能,以及底行模式的文件操作、搜索替换等实用技巧,还介绍了视图模式的批量操作。文章内容详实,涵盖了Linux系统管理和文本编辑的基础知识,适合初学者系统学习。
2026-01-28 16:54:31
791
原创 数据结构--顺序结构二叉树(堆)
本文系统介绍了二叉树及其应用。首先阐述了二叉树的基本概念、特殊类型(满二叉树、完全二叉树)和性质,详细分析了顺序存储和链式存储两种结构。重点讲解了堆的实现,包括插入、删除操作的向上/向下调整算法,并提供了完整的堆操作代码实现。最后探讨了堆的两个重要应用:堆排序(时间复杂度O(N*logN))和Top-K问题解决方案。通过理论讲解和代码示例相结合的方式,全面展示了二叉树在数据结构中的核心地位和实际应用价值。
2026-01-24 11:22:32
579
原创 数据结构--栈和队列
本文介绍了栈和队列两种数据结构的概念与实现方法。栈采用LIFO原则,通过数组实现,包含初始化、压栈、出栈等操作;队列遵循FIFO原则,使用链表实现,支持入队、出队等功能。文中详细展示了两种数据结构在C语言中的具体实现代码(包括头文件和源文件),并比较了不同实现方式的优劣。特别强调了栈顶指针设计的两种方案差异,以及队列实现时如何通过结构体封装简化二级指针的使用。两种数据结构都提供了完整的初始化、销毁、插入、删除等基本操作接口。
2026-01-21 21:35:22
1072
原创 Linux权限的概念
本文摘要:文章首先介绍了Shell命令及其运行原理,说明Shell作为用户与Linux内核交互的桥梁作用。接着详细讲解了Linux权限管理,包括用户分类、文件访问者角色和基本权限。重点阐述了文件权限设置方法:chmod的字符表示法(如u+r)和八进制表示法(如664),以及chown/chgrp修改文件属主和属组。还介绍了umask掩码对默认权限的影响,并特别说明目录权限的特殊性。最后通过粘滞位(t)解决目录中文件删除权限问题,强调权限管理的精细控制对系统安全的重要性。
2026-01-19 11:23:54
648
原创 数据结构--双向链表
本文详细介绍了双向链表的实现过程。主要内容包括:1.双向链表采用带头节点(哨兵位)结构,哨兵位不存储有效数据但能防止遍历死循环;2.详细展示了List.h头文件和List.c源文件的实现,包含节点结构定义及初始化、插入(尾插/头插/指定位置后插)、删除(尾删/头删/指定节点删)等核心操作;3.通过test.c测试文件验证了各功能的正确性。代码分析部分着重讲解了初始化、打印及各操作的具体实现逻辑,体现了双向链表相比单链表在操作上的灵活性。
2026-01-16 13:45:00
712
原创 Linux基本指令(2)
本文总结了16个常用Linux命令及其用法:1.文件查看类:more/less、head/tail、grep 2.时间日历类:date、cal 3.文件操作类:find、zip/unzip、tar、rz/sz 4.系统信息类:which/whereis、uname、top 5.其他工具:alias、bc 重点命令包括less(强大分页查看)、tar(重要打包工具)、grep(文本搜索)等,涵盖了文件处理、系统管理和日常运维的常用操作。
2026-01-13 22:26:22
752
原创 数据结构-单链表
本文介绍了链表的基本概念和单链表的实现。链表是一种非连续、非顺序的存储结构,通过指针链接实现数据元素的逻辑顺序。文中用火车车厢类比链表节点,每个节点包含数据和指向下个节点的指针。详细阐述了单链表的实现过程,包括节点结构体定义、创建、销毁及各种操作(打印、头插尾插、头删尾删、查找、指定位置插入删除等)。通过C语言代码展示了单链表的具体实现,包括SList.h头文件定义、SList.c源文件实现和test.c测试文件。测试案例验证了链表各功能的正确性,为理解链表数据结构提供了实践参考。
2026-01-11 13:32:59
683
原创 Linux基本指令(1)
本文摘要: 本文系统介绍了Linux常用基础命令及用法,包括:1.ls命令(列出目录内容,含多种选项参数);2.pwd(显示当前目录);3.cd(切换目录,讲解绝对/相对路径);4.touch(创建文件);5.mkdir(创建目录);6.rmdir/rm(删除空目录/文件目录);7.man(查看命令手册);8.cp(复制文件目录);9.mv(移动/重命名文件);10.cat(查看文件内容)。每个命令详细说明了语法、功能、常用选项和具体示例,帮助用户掌握Linux基础文件操作。
2026-01-09 20:40:29
808
原创 基于顺序表实现通讯录项目
本文实现了一个基于顺序表的通讯录管理系统。系统分为顺序表模块(SeqList)和通讯录模块(Contact),通过typedef将顺序表重命名为通讯录。主要功能包括:初始化/销毁通讯录、添加/删除联系人、修改联系人信息、查找联系人以及展示通讯录。顺序表采用动态内存管理,自动扩容机制确保存储空间充足。通讯录记录包含姓名、性别、年龄、电话和地址信息。通过菜单界面提供用户交互,实现了完整的CRUD操作。关键技术点包括:动态数组管理、数据结构封装、模块化设计以及避免头文件循环包含问题。测试用例验证了各功能的正确性。
2026-01-08 21:00:00
248
原创 数据结构-顺序表
摘要:本文介绍了数据结构的基本概念,重点讲解了顺序表的实现原理。文章详细分析了静态和动态顺序表的区别,并给出了动态顺序表的C语言实现代码,包括初始化、增删改查等核心功能。特别强调了动态扩容机制和边界检查的重要性,通过realloc实现按需扩容,避免空间浪费。代码示例展示了如何正确处理内存管理、数据移动等关键操作,为理解顺序表的工作原理提供了实践参考。
2026-01-05 21:15:00
605
原创 C语言动态内存管理
本文介绍了C语言动态内存分配的相关知识。主要内容包括:1)动态内存分配的必要性,解决了固定大小数组的局限性;2)malloc和free函数的使用方法及注意事项;3)calloc和realloc函数的特点与应用场景;4)常见动态内存错误类型分析;5)典型动态内存笔试题解析;6)柔性数组的概念与优势。文章重点强调了动态内存管理中的常见陷阱,如内存泄漏、悬空指针等问题,并提供了正确使用动态内存的方法和最佳实践建议。
2026-01-03 22:00:00
628
原创 C语言自定义类型:联合和枚举
本文介绍了C语言中联合体和枚举的基本概念与使用方法。联合体是一种共用内存空间的复合数据类型,其特点包括:所有成员共享同一内存空间,大小至少为最大成员的大小,常用于节省内存。文中通过代码示例演示了联合体的声明、内存布局、大小计算及实际应用场景(如判断机器字节序)。枚举类型用于定义一组相关常量,具有增加代码可读性、便于调试等优点。文章详细说明了枚举的声明方式、默认赋值规则以及手动指定值的方法,并通过示例展示了枚举变量的使用。两种数据类型都提供了比基础类型更高效的编程方式。
2026-01-01 22:00:00
1838
原创 C语言自定义类型:结构体
本文介绍了C语言中结构体的相关知识,包括结构体声明、内存对齐、传参和位段实现。主要内容:1. 结构体类型声明及变量初始化方法;2. 结构体内存对齐规则及其原因(空间换时间);3. 结构体传参建议使用地址传递;4. 位段的定义、内存分配特点及跨平台问题,以及位段在网络协议等场景的应用。文章重点分析了结构体内存对齐的计算规则和位段的使用注意事项,为C语言数据结构设计提供了实用指导。
2025-12-29 18:44:15
728
原创 数据在内存中的存储
本文深入探讨了数据在内存中的存储方式,重点解析了整数和浮点数的存储机制。文章还包含多个典型练习题,涉及整型提升、溢出处理、指针运算等核心概念,帮助读者深入理解数据在内存中的实际存储形式和处理逻辑。这些内容为理解计算机底层数据存储和处理机制提供了重要参考。
2025-12-28 22:30:00
942
原创 c语言内存函数
本文介绍了四个C语言内存操作函数:1.memcpy用于非重叠内存的复制,模拟实现时按字节从低地址向高地址复制;2.memmove处理可能重叠的内存复制,模拟实现时根据情况选择正向或反向复制;3.memset以字节为单位设置内存值;4.memcmp比较指定字节数的内存内容。每个函数都通过示例代码演示了使用方法,并提供了memcpy和memmove的模拟实现细节。这些函数都是对内存进行直接操作的底层工具,使用时需注意参数的正确性和内存边界问题。
2025-12-26 17:08:04
347
原创 字符函数和字符串函数
本文介绍了C语言中常用的字符串处理函数,包括字符分类函数、字符转换函数、字符串操作函数(strlen/strcpy/strcat/strcmp)及其模拟实现方法。同时讲解了带长度限制的字符串函数(strncpy/strncat/strncmp)、子串查找函数(strstr)和字符串分割函数(strtok)的使用。通过示例代码演示了这些函数的具体应用,并提供了多个实现方案,如递归实现strlen、指针运算实现strlen等。这些函数是C语言字符串处理的基础
2025-12-23 19:06:38
660
原创 c语言指针详解(6)
本文详细解析了C语言中sizeof和strlen的区别与应用场景。文章通过大量代码示例分析了指针与数组的关系,包括一维/二维数组的sizeof计算、指针运算规则,以及strlen的错误用法等。最后通过复杂指针案例(如三级指针操作)展示了指针运算的实际应用,强调类型转换对指针运算的影响。全文通过内存布局图示和分步解析,深入浅出地讲解了指针与数组的核心概念。
2025-11-27 20:53:00
1298
原创 c语言指针详解(4)
本文系统讲解了C语言中各类指针的概念与应用:1. 字符指针解析了两种使用方式,指出字符串常量赋值的本质是传递首字符地址;2. 数组指针详细区分了指针数组与数组指针,说明数组指针指向整个数组的特性;3. 二维数组传参揭示了形参可接受数组或指针形式的本质;4. 函数指针介绍了创建与调用方法,分析了复杂指针声明和typedef简化技巧;5. 最后通过计算器案例展示了函数指针数组作为转移表的实际应用。全文通过代码示例深入浅出地阐述了各类指针的语法特征与使用场景,为理解C语言指针机制提供了系统指导。
2025-11-22 16:07:28
1255
原创 c语言指针详解(3)
本文深入探讨了指针与数组的关系,主要包含以下内容:1.数组名本质上是首元素地址(两个sizeof和&例外);2.指针访问数组的等价形式(arr[i]等价于*(arr+i));3.一维数组传参本质是传递首地址;4.冒泡排序的实现与优化;5.二级指针的概念与运算;6.指针数组的定义与应用;7.用指针数组模拟二维数组的方法。文章通过代码示例详细解析了指针在数组操作中的核心作用与技巧,为理解指针与数组的交互提供了系统指导。
2025-11-20 13:17:44
1123
原创 c语言指针详解(2)
本文主要探讨了C语言中const修饰指针的应用、野指针问题及指针传参机制。首先详细分析了const修饰指针变量的三种情况:修饰指针指向内容(*左边)、修饰指针变量本身(*右边)以及同时修饰两边的情况。其次剖析了野指针的三大成因(未初始化、越界访问、空间释放)及其规避方法(初始化、防越界、置NULL)。最后通过strlen模拟实现和swap函数案例,对比了传值调用与传址调用的区别,指出传址调用可实现函数对外部变量的修改。全文系统性地讲解了指针的关键使用技巧和注意事项。
2025-10-01 20:40:31
985
原创 c语言指针详解(1)
本文主要介绍了C语言中指针的基本概念与应用。首先解释了内存编址原理,说明计算机通过地址总线访问内存单元。其次详细讲解了指针变量的定义和使用:通过取地址操作符(&)获取变量地址,使用解引用操作符()访问指针指向的数据,并分析了指针变量在不同平台下的大小(32位系统4字节,64位系统8字节)。然后阐述了指针类型的重要性,指出不同类型指针在解引用和指针运算时的差异,以及void指针的特殊用途。最后介绍了指针的三种基本运算:指针与整数加减、指针相减和指针关系运算,并给出了数组遍历等实际应用示例。
2025-09-29 23:31:55
649
原创 c语言中关于操作符的相关内容的详解
本文主要介绍了C语言中的操作符及其应用。首先概述了操作符的分类,包括算术、移位、位、赋值等类型。重点讲解了移位操作符的规则和二进制补码表示,以及位操作符(&、|、^、~)的使用方法。随后通过实例展示了如何利用位操作交换变量、统计1的个数等技巧。文章还介绍了结构体及其成员访问操作符(.和->)的使用,并详细解释了操作符的优先级和结合性等属性。最后讨论了表达式求值中的整型提升和算术转换机制,并分析了多个可能导致歧义的问题表达式。全文强调在实际编程中应注意避免编写过于复杂的表达式以确保程序行为的确定
2025-09-27 22:34:40
788
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅