自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 栈和队列:先进先出、先进后出

本文介绍了栈和队列两种数据结构的基本概念、实现方法及相关应用。栈是后进先出(LIFO)的线性表,可用数组或链表实现,重点讲解了压栈、出栈操作及判空等函数。队列是先进先出(FIFO)结构,通常用链表实现,详细说明了入队、出队操作及循环队列的实现原理。最后列举了4道相关面试题,包括括号匹配、栈与队列相互实现、循环队列设计等实际问题,并简要分析了解题思路。文章通过代码示例和图示,清晰地展示了这两种数据结构的核心特性和典型应用场景。

2026-03-05 13:11:15 364

原创 顺序表、链表,以及那道让人头秃的“随机链表复制”

本文介绍了线性表的基本概念和顺序表的实现。线性表是n个相同特性元素的有限序列,包括顺序表、链表等结构。顺序表通过数组存储元素,分为静态和动态两种类型。文章详细讲解了动态顺序表的实现,包括初始化、销毁、扩容、头尾插入删除等操作,并提供了相关代码示例。此外,还通过两个算法题(移除元素和删除有序数组重复项)展示了顺序表的实际应用,给出了C和C++两种解法。整体内容涵盖了线性表和顺序表的基础知识及实践应用。

2026-02-28 16:36:59 540

原创 数据结构:算法的时间复杂度和空间复杂度

文章摘要: 本文介绍了算法效率的衡量标准——算法复杂度,包括时间复杂度和空间复杂度。时间复杂度通过大O渐进表示法估算基本操作执行次数,常见案例包括冒泡排序O(N²)、二分查找O(logN)和斐波那契递归O(2^N)。空间复杂度衡量算法运行时临时占用存储空间,如冒泡排序O(1)和动态数组O(N)。文中通过具体代码示例详细讲解了不同算法复杂度计算方法和推导过程,并强调实际应用中通常关注最坏情况下的复杂度表现。

2026-02-03 23:55:45 643 1

原创 C语言编译系统构建全流程解析:从源程序到可执行映像的翻译环境与预处理机制研究

本文详细介绍了C程序的翻译环境和执行环境。翻译环境包括编译和链接两个阶段,其中编译又分为预处理、编译和汇编三个步骤。预处理会进行宏展开、头文件包含等操作;编译包括词法、语法和语义分析;汇编则将代码转为机器指令;链接则合并目标文件和库文件。执行环境涉及程序加载、运行和终止过程。文章还深入讲解了预处理指令#define的用法,包括定义常量、宏、带副作用的参数等,并对比了宏与函数的优缺点。最后介绍了#和##运算符的特殊用法,用于字符串化和符号连接。通过本文可以全面了解C程序从源代码到可执行文件的完整生命周期。

2026-01-31 19:41:11 616

原创 C语言中的“文件恋爱学”:从流表白到读写分手,再到判定终点的那些事儿

文章摘要:本文介绍了文件的基本概念、分类及操作方式。文件分为程序文件和数据文件,数据文件又可分为文本文件和二进制文件。文件操作通过文件指针实现,使用fopen和fclose函数进行打开和关闭。文章详细讲解了顺序读写函数如fgetc/fputc和fgets/fputs的使用方法,并通过示例代码演示了文件读写操作。最后还介绍了流的概念,包括标准输入输出流stdin/stdout/stderr。

2026-01-28 17:04:50 564

原创 C语言内存管理:从malloc/free到柔性数组

本文介绍了C语言中动态内存管理的核心概念和方法。主要内容包括:1)静态内存分配的局限性,强调动态内存分配的必要性;2)详细讲解malloc、calloc和realloc三种动态内存分配函数的使用方法及区别;3)分析常见的动态内存错误,如空指针解引用、越界访问、错误释放等;4)通过典型笔试题演示常见的内存管理陷阱。文章强调动态内存使用的基本原则:谁申请谁释放、释放后置空指针、避免内存泄漏等,为正确使用动态内存提供了实用指导。

2026-01-23 15:44:39 714

原创 结构体、联合和枚举:从基础语法到内存布局与高级应用

本文详细介绍了C语言中结构体的相关内容。首先讲解了结构体的声明方式、变量创建和初始化方法,包括嵌套结构体的使用。重点分析了结构体内存对齐规则,通过示例说明如何计算结构体大小,并解释了内存对齐的必要性(提升性能但牺牲空间)。此外还介绍了结构体的自引用、位段声明、修改默认对齐数等特殊用法。最后对比了结构体传参的两种方式,推荐使用指针传参以提高效率。文章内容全面,涵盖了结构体的主要知识点,适合C语言学习者系统掌握结构体的使用。

2026-01-19 14:27:55 571

原创 深入理解C语言内存操作函数:memcpy、memmove、memset、memcmp的用法与实现

本文介绍了四种内存操作函数的使用与实现方法:1)memcpy用于非重叠内存区域的字节复制;2)memmove处理可能存在重叠的内存复制,通过判断重叠情况选择从前向后或从后向前复制;3)memset以字节为单位设置内存值,但需注意整型数组的设置效果;4)memcmp比较两个内存区域的前num个字节。文章详细讲解了各函数的功能特点、使用场景和模拟实现代码,并配有示意图说明其工作原理。特别强调了memcpy与memmove在处理重叠内存时的区别,以及memset设置整型数组时的注意事项。

2026-01-16 15:33:35 413

原创 字符函数和字符串函数:C 语言文本处理的核心工具箱

本文介绍了C语言中常用的字符串操作函数及其模拟实现。主要内容包括:1) strlen函数用于计算字符串长度;2) strcpy实现字符串拷贝;3) strcat完成字符串拼接;4) strcmp进行字符串比较;5) strncpy、strncat、strncmp等带长度限制的安全版本函数;6) strstr查找子串位置。文章详细说明了每个函数的使用方法、注意事项,并提供了指针、计数器和递归等多种模拟实现方式,帮助深入理解字符串操作原理。

2026-01-14 17:34:50 676

原创 指针:访问与操纵内存的艺术

本文介绍了C语言中指针的核心概念与应用。首先解释了内存管理的基本原理,包括内存单元的划分、地址与指针的关系。然后详细讲解了指针变量的定义和使用,包括取地址操作符(&)和解引用操作符()的使用方法。文章还分析了指针变量的大小与平台的关系,以及不同类型指针在解引用和地址运算时的差异。同时介绍了void指针的特殊用途和const修饰指针的不同效果。最后重点讨论了野指针的成因及规避方法,并简要介绍了assert断言的使用。全文系统性地阐述了指针的基础知识,为后续深入学习指针的高级应用奠定了基础。

2026-01-08 19:57:47 607

原创 数据在内存中的“形态学”:整型存储、字节序架构与浮点编码的特殊约定

本文探讨了整数和浮点数在内存中的存储方式。整数以补码形式存储,便于统一处理符号位和加减运算。大小端字节序决定了多字节数据的存储顺序,可通过简单程序检测系统采用的模式。浮点数按IEEE 754标准存储,分为符号位、指数和有效数字三部分,其中指数采用偏移值表示,有效数字默认省略前导1。文章通过多个代码示例展示了不同数据类型的存储特点,包括用%d打印无符号数、%u打印有符号数以及浮点数的存取规则,深入解析了计算机系统中数值存储的底层原理。

2025-12-25 12:03:18 514

原创 胡凡算法入门篇精选题解(二·散列篇):高效的映射魔法

本文介绍了散列(Hash)的基本概念和应用。散列通过哈希函数将数据映射到固定范围的整数,实现O(1)时间复杂度的查找和插入操作。基础应用包括字符出现次数统计、字符存在性判断和整数统计。进阶应用扩展了字符范围,并介绍了2-SUM问题的解法。关键点包括哈希表设计策略、无符号字符处理以及精确映射与ASCII直接映射的选择。通过示例代码展示了如何利用散列高效解决各类统计和查询问题。

2025-12-23 22:11:50 513

原创 胡凡算法入门篇精选题解(二·排序篇):经典的简单排序

本文介绍了三种经典排序算法:简单选择排序、直接插入排序和qsort函数的使用。简单选择排序通过不断选择剩余元素的最小值进行排序,时间复杂度为O(n²),空间复杂度O(1),但不稳定。直接插入排序将数组分为有序和无序区,逐步将元素插入正确位置,时间复杂度平均O(n²),最好情况O(n),是稳定排序。文章还提供了二分查找和哨兵两种优化版本。最后介绍了qsort函数的使用方法,包括整数、浮点数和字符串的比较函数编写规范。这三种算法各具特点,适用于不同场景的数据排序需求。

2025-12-20 15:18:36 505

原创 结构体:程序员的第一块“自留地”

本文介绍了C语言结构体的基本概念和使用方法。主要内容包括:结构体的声明与初始化(含匿名结构体)、结构体的自引用方式(需使用指针避免无限递归)、结构体成员的访问(通过.和->操作符)以及结构体传参的最佳实践(推荐传递指针以减少栈开销)。文章通过代码示例演示了结构体的定义、初始化和访问方式,并强调了在结构体自引用时应避免使用匿名结构体,在参数传递时应优先选择指针传参以提高性能。

2025-12-18 10:58:49 255

原创 胡凡算法入门篇精选题解(三):字符串处理与校验的核心模板精讲

本文介绍了三种字符串处理算法:回文字符串判断、单词内部逆序和求公共前缀。对于回文字符串,采用对称比较法或双指针法;单词逆序通过逐个字符反转实现;公共前缀则需先确定最短字符串长度,再逐字符比较。每种方法都给出了C语言实现代码,并指出了常见错误,如缓冲区溢出、数组越界等注意事项。文章还提供了相关算法博客链接供深入学习。这些基础算法在字符串处理中具有广泛应用,掌握它们能有效提升编程能力。

2025-12-16 16:29:33 597

原创 操作符:程序世界的语法工具箱

本文系统介绍了C语言中的操作符分类及使用方法,重点讲解了算术、赋值、单目、逻辑、条件等操作符的特性。详细分析了移位操作符的运算规则,并解释了原码、反码、补码的概念及其在计算机中的存储方式。通过代码示例演示了各操作符的实际应用,包括前置/后置自增运算、逻辑运算的短路特性等。同时补充了二进制与其他进制转换的基础知识,为理解位运算提供了必要前提。全文深入浅出地讲解了C语言操作符的核心概念和使用技巧。

2025-12-15 21:36:47 914

原创 胡凡算法入门篇精选题解(二):日期与进制转换的核心技巧精讲

本文总结了日期处理和进制转换两大算法的核心模板。日期处理部分包括:每月天数初始化、闰年判断、日期加减运算、一年中天数计算、日期比较以及星期映射规则处理。进制转换部分重点介绍了字符转数字规则和十进制转K进制的"除基取余法",通过不断除K取余并逆序排列得到结果。这些模板可以灵活应用于各类相关问题,是算法实现的重要基础。

2025-12-15 09:27:39 167

原创 胡凡算法入门篇精选题解(一):从单调序列到图形输出的综合实践

本文介绍了三种重要算法问题的解决思路:1)判断单调序列的两种方法(计数法和标志位法);2)快速幂算法及其应用,通过二进制分解和平方递推高效计算大数幂运算;3)图形打印的基本模板,并以等腰直角三角形为例说明规律。每种方法都配有代码实现和详细解析,展示了算法思维在不同场景下的应用技巧。

2025-12-12 08:33:10 255

原创 数组:编程世界里的收纳大师

今天,我们来看看数组。

2025-12-10 10:27:51 831

原创 编程中的函数哲学:封装、调用与自我迭代

本文系统介绍了C语言中函数的相关知识。首先阐述了函数的基本概念,指出函数是一段完成特定任务的代码块,具有封装和复用特性。其次讲解了库函数的使用方法,包括标准库介绍、头文件包含和实践操作。然后详细说明了自定义函数的语法形式、形参与实参的区别、函数调用方式(传值调用和传址调用)以及return语句的使用注意事项。此外,还介绍了数组作为函数参数的传递规则,以及嵌套调用和链式访问两种函数调用方式。最后强调了函数声明的重要性,确保函数在被调用前已正确定义或声明。通过具体代码示例,全面展示了C语言函数的使用方法和注意事

2025-12-07 12:29:52 783

原创 分支与循环:选择向左,循环向右

C语言本身就是结构化的程序设计语言,分支与循环的结构包括,接下来围绕着这个结构,我们来开始相关内容的学习。

2025-12-03 18:05:34 698

原创 关于C语言的基础见识

C语言相关的基础知识

2025-12-01 00:46:54 948

空空如也

空空如也

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

TA关注的人

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