- 博客(22)
- 收藏
- 关注
原创 队列的实现和应用
本文介绍了队列的实现和应用。队列是一种先进先出(FIFO)的数据结构,包含队头和队尾操作。文章详细展示了队列的C语言实现,包括初始化、销毁、插入/删除数据、判空、获取队头/队尾元素等核心操作。并通过测试代码验证了队列功能的正确性。最后给出一个经典应用实例:如何使用两个队列实现栈的功能(后进先出),提供了完整的代码实现方案,包括push、pop、top和empty等操作。该方案通过交替使用两个队列来模拟栈的行为,展示了数据结构之间的相互转换技巧。
2025-12-23 20:59:16
384
原创 栈的实现与应用
本文介绍了栈的基本概念和数组实现方式。栈是一种遵循先入后出原则的线性表,支持在栈顶进行插入和删除操作。文章详细展示了用C语言实现栈的完整代码,包括初始化、销毁、入栈、出栈、判空等操作,并通过测试用例验证了功能。最后,通过LeetCode经典例题"有效的括号",演示了栈在实际问题中的应用。该解法利用栈结构验证括号匹配,正确处理了各种边界情况,体现了栈在解决对称性问题中的优势。
2025-12-09 15:54:06
122
原创 双向链表的实现
本文详细介绍了带头双向循环链表的实现方法。链表使用哨兵位头节点作为占位符,包含初始化、销毁、节点申请、打印等基础操作,以及尾插/头插、尾删/头删、查找、指定位置插入/删除等核心功能。代码实现中,每个节点都包含前驱和后继指针,形成双向循环结构。测试函数展示了链表的各项操作,包括查找、插入和删除节点等。该实现充分体现了双向循环链表在插入删除操作上的高效性,适用于需要频繁增删节点的场景。
2025-11-30 19:48:19
339
原创 单链表的实现
本文介绍了单链表的实现方法。单链表是一种非连续、非顺序的存储结构,通过指针实现逻辑顺序。文章详细阐述了链表结点的组成(数据域和指针域),并提供了完整的C语言实现代码,包括创建结点、插入/删除数据(头插尾插/头删尾删)、查找元素、指定位置操作以及销毁链表等功能。测试函数演示了链表的各项操作,如查找元素2、删除指定位置结点等,最后销毁链表释放内存。整个实现过程通过指针操作完成,体现了链表动态内存管理的特点。
2025-11-16 21:47:32
291
原创 顺序表的实现
本文介绍了线性表和顺序表的实现。线性表是具有相同特性的数据元素的有限序列,可采用数组或链式存储。顺序表是物理地址连续的线性结构,主要分为静态和动态两种形式。文章详细展示了动态顺序表的C语言实现,包括初始化、扩容、插入(头插/尾插)、删除(头删/尾删)、查找、指定位置操作以及销毁等功能。通过结构体和指针实现动态内存管理,使用realloc进行容量调整,并提供了完整的功能函数实现代码。该实现展示了顺序表的基本操作方法和内存管理机制。
2025-11-09 20:18:18
306
原创 算法复杂度
本文介绍了算法复杂度分析的基本概念和方法。主要包含算法定义、时间复杂度与空间复杂度的概念及其计算方法。通过多个代码示例,详细讲解了如何运用大O渐进表示法分析各类算法的时间复杂度,包括循环、递归等不同结构。同时说明了空间复杂度的评估原则,并通过旋转数组问题的三种解法对比,展示了不同算法在时间和空间效率上的差异。文章强调时间复杂度是衡量算法性能的主要指标,并给出了具体计算步骤和实例分析。
2025-11-02 20:07:03
604
原创 动态内存管理
本文介绍了C语言动态内存管理的基本概念和常用函数。主要包括:1)动态内存的必要性,指出栈区空间固定大小无法满足需求时需要使用动态内存;2)malloc和free函数的使用方法及注意事项,强调malloc后必须检查返回值,free后要置空指针;3)calloc和realloc函数的特点,calloc会自动初始化内存为0,realloc可调整内存大小;4)常见动态内存错误,如空指针解引用、越界访问、重复释放等;5)通过典型笔试题分析动态内存使用中的常见问题。文章强调动态内存使用后必须释放以避免内存泄漏,并提供了
2025-10-27 20:21:07
771
原创 自定义:联合体和枚举
联合体与枚举摘要 联合体(共用体)特点: 成员共享同一内存空间,大小为最大成员所占空间 修改一个成员会影响其他成员 计算规则:最大成员大小且满足对齐要求 应用场景:节省内存空间(如商品信息存储)、判断机器大小端 枚举类型特点: 用于列举有限常量集合(如星期、性别) 默认从0开始递增,可手动赋初值 相比#define优点:类型检查、调试友好、作用域控制 典型应用:提高代码可读性(如计算器菜单选项) 两者对比: 联合体侧重内存共享,枚举侧重常量管理 联合体大小由成员决定,枚举本质是整型常量 联合体常用于底层操作
2025-10-20 20:05:15
922
原创 自定义类型:结构体
本文介绍了C语言中结构体的基本概念和使用方法。主要内容包括:1.结构体类型的声明,包括匿名结构体和结构体自引用;2.结构体内存对齐规则及其原因,通过示例说明对齐对内存空间的影响;3.结构体传参建议使用指针方式;4.位段的定义、内存分配方式及跨平台问题,指出位段在不同平台上的不确定性。文章强调结构体对齐是空间换时间的做法,并建议在结构体设计时将小成员集中放置以节省空间。最后提醒位段使用注意事项,如不能对位段成员取地址等。
2025-10-19 20:00:40
883
原创 数据在内存中的存取
本文介绍了数据在内存中的存取方式,主要分为整数和浮点数两部分。整数存储使用补码形式,打印时转换为原码;大小端字节序决定了多字节数据的存储顺序,可通过编程判断。浮点数存储遵循IEEE754标准,由符号位S、指数E和有效数字M组成,存取时需进行特殊处理。文章通过实例分析了9以整数和浮点数形式存储时的差异,验证了浮点数的存储规则。最后,通过代码示例展示了不同类型数据存取时的内存表现差异。
2025-10-16 19:33:45
693
原创 C语言中操作符详解
本文详细介绍了C语言中的各种操作符及其应用。首先分类讲解了算术、移位、位、赋值、关系、逻辑和条件操作符;然后深入讲解了进制转换方法,包括二进制与十进制、八进制、十六进制的相互转换;接着阐述了原码、反码和补码的概念及转换规则;重点分析了移位操作符(左移/右移)和位操作符(与、或、异或、取反)的使用方法及典型应用场景,如统计二进制位中1的个数、修改特定位等;最后简要提及了单目操作符和逗号表达式。全文通过大量代码示例和图示,帮助读者深入理解操作符的工作原理和实际应用。
2025-10-12 14:49:16
1025
原创 C语言中的内存函数
本文介绍了C语言中常用的内存操作函数:memcpy、memmove、memset和memcmp。memcpy用于内存块拷贝,但无法处理内存重叠;memmove则能处理重叠数据。memset用于设置内存块内容,而memcmp用于内存块比较。文章通过代码示例展示了各函数的用法,并模拟实现了memcpy和memmove函数。这些函数在操作内存时以字节为单位,使用前需包含string.h头文件,适用于不同类型数据的底层内存操作。
2025-09-30 22:34:15
425
原创 字符函数和字符串函数
本文介绍了C语言中常用的字符函数和字符串函数。字符函数部分包括字符分类函数(如isdigit、isalpha等)和字符转换函数(toupper、tolower)。字符串函数部分详细讲解了strlen、strcpy/strncpy、strcat/strncat、strcmp/strncmp以及strstr等函数的功能、用法及模拟实现。这些函数可用于字符类型判断、大小写转换、字符串长度计算、拷贝、连接、比较和查找等操作,是C语言字符串处理的重要工具。每个函数都配有示例代码和运行结果说明,部分函数还提供了模拟实现
2025-09-27 19:34:07
673
原创 深入了解指针(6)(sizeof和strlen)
本文深入解析了sizeof和strlen的区别与应用。sizeof是操作符,计算数据所占字节数;strlen是库函数,计算字符串长度直到遇到'\0'。文章通过大量代码示例演示了它们在数组、字符串和指针中的具体应用,包括一维数组、字符数组和二维数组的多种情况。特别强调了strlen可能导致的越界访问问题,以及sizeof在不同上下文中的表现差异。最后通过三道典型习题巩固理解,如指针运算、结构体大小计算等。这些内容对掌握C语言内存管理和指针操作至关重要。
2025-09-21 20:18:37
377
原创 深入了解指针(5)(回调函数和qsort)
本文介绍了回调函数和qsort函数的原理与应用。回调函数是通过函数指针调用的函数,常用于将函数地址作为参数传递。qsort是一个通用的排序函数,可对任意类型数据进行排序,其核心是通过比较函数指针实现排序逻辑。文章通过代码示例演示了如何使用qsort排序整型数组和结构体(按名字或年龄),并展示了如何用qsort的逻辑改造冒泡排序算法。qsort的关键在于灵活使用void指针和自定义比较函数来实现通用排序功能。这些技巧在C语言程序设计中具有重要应用价值。
2025-09-19 19:54:52
143
原创 深入了解指针(4)
本文探讨了指针与函数、数组的结合应用。主要内容包括:1)字符指针的两种用法,包括指向单个字符和常量字符串;2)数组指针的定义和使用,以及二维数组传参的本质,说明二维数组首元素是行地址;3)函数指针的定义和使用方式,以及函数指针数组的应用;4)typedef重命名复杂类型的方法;5)通过转移表示例展示如何使用函数指针数组替代冗余的switch语句,实现计算器功能。文章通过代码示例详细说明了各种指针的应用场景和使用技巧。
2025-09-14 20:14:49
414
原创 深入了解指针(3)(指针与数组)
本文探讨了指针与数组的关系,分析了数组名的特殊含义(首元素地址,但sizeof和&操作例外),揭示了一维数组传参实质是指针传递。介绍了通过指针访问数组的等价方式,以及冒泡排序的实现及优化方法。同时讲解了指针数组和二级指针的概念,指出通过指针数组模拟二维数组与真实二维数组的内存连续性差异。全文深入解析了指针和数组之间的内在联系及应用场景。
2025-09-10 19:18:46
309
原创 深入了解指针(2)
本文深入探讨了指针相关的几个关键知识点:1) const修饰符的作用,说明其如何将变量转为常变量,并介绍const与指针结合的两种用法;2) 野指针的成因(未初始化、越界访问、指向释放空间)及防范措施;3) assert断言的使用方法和适用环境;4) 传值调用与传址调用的区别,通过变量交换案例说明两者适用场景。文中配有代码示例和图示,帮助理解指针操作的底层原理和应用技巧。
2025-09-09 21:16:07
324
原创 深入了解指针(1)
本文介绍了指针的基本概念和应用。首先解释了内存地址与指针的关系,内存被划分为字节单元,每个单元都有唯一编号即指针地址。其次,详细说明指针变量的定义和使用,包括取地址操作符&和解引用操作符*的使用方法。然后分析了指针变量在不同系统环境下的存储大小及其解引用权限差异。最后探讨了指针的运算规则,包括指针加减整数、指针减指针以及指针大小比较等操作,并通过示例演示了不同类型指针运算时的字节跳跃差异。全文为理解指针的基础知识提供了系统性的介绍。
2025-09-08 22:12:19
415
原创 用c语言进行二分法查找
本文将用c语言来介绍二分法的使用。提示:以下是本篇文章正文内容,下面案例可供参考本文介绍了如何使用c语言来进行二分法的查找。
2025-04-21 20:25:28
828
原创 如何用c语言写一段关机程序以及一段猜数字游戏
本文介绍了如何使用c语言来让你的电脑关机以及取消关机,和一个猜数字小游戏本文介绍了如何如何用c语言写一段关机程序以及一段猜数字游戏,其中运用了c语言中goto,switch,while,dowhile等的用法。
2025-04-16 17:12:52
675
原创 C语言中for,while,dowhile三种循环
本文介绍了c语言中for,while,dowhile 三种循环的用法提示:以下是本篇文章正文内容,下面案例可供参考。
2025-04-14 18:07:59
659
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅