- 博客(11)
- 收藏
- 关注
原创 入门基础:四大基础排序算法(C语言实现)
本文介绍了四种基础排序算法:冒泡排序通过相邻元素交换实现简单排序;快速排序采用分治策略,高效处理大规模数据;插入排序将元素逐个插入有序序列;选择排序通过选择最小元素逐步构建有序序列。每种算法都配有C语言实现代码,并详细分析了适用场景和常见错误,为初学者提供了全面的排序算法学习指南。这些算法各具特点,适用于不同规模和数据特征的应用场景。
2025-12-14 14:29:15
198
原创 超适合初学者——哈希表的C语言简单实现
哈希表是一种高效的数据结构,通过哈希函数将键映射到固定范围的数组下标,实现快速数据存取。当不同键映射到相同索引时会产生哈希冲突,常用解决方法包括链地址法和开放地址法。本文以C语言实现为例,展示了哈希表的创建、插入、查找和删除操作,采用链地址法处理冲突。哈希表结合了数组快速访问和链表灵活存储的优点,适用于需要高效查找的场景,如学号查询系统等。关键要素包括哈希函数、冲突处理机制和动态扩容策略,合理设计这些要素能显著提升哈希表性能。
2025-12-06 14:00:08
1747
原创 摩尔投票算法:寻找多数元素的优雅解法
摩尔投票算法是一种高效查找数组多数元素的算法,通过"消除不同元素"的思想,以O(n)时间复杂度和O(1)空间复杂度工作。算法维护候选者和计数器,遍历数组时相同元素则计数增加,不同则减少,计数归零时更换候选者。最后需验证候选者是否真正满足出现次数过半的条件。该算法适用于存在明确多数元素的场景,其数学原理基于多数元素的数量优势在消除过程中保持不变的特点。示例代码展示了具体实现过程,通过逐步演示说明了算法运作机制。
2025-11-29 19:32:27
386
原创 C语言实现滑动窗口算法:从暴力枚举到高效优化,双指针技巧的华丽蜕变
滑动窗口算法摘要 滑动窗口是一种高效处理数组/字符串连续子区间问题的算法,通过双指针维护可变或固定大小的窗口,将时间复杂度从O(n²)优化至O(n)。其核心在于:1) 右指针扩展窗口;2) 条件不满足时左指针收缩窗口;3) 实时更新结果。适用于两类问题: 固定窗口(如求长度为k的子数组最大和),通过预计算初始窗口后滑动比较; 可变窗口(如和≥target的最短子数组),动态调整窗口边界。关键要素包括双指针协同、边界条件处理(空数组/无效输入)和重复计算避免。典型应用场景包括子数组平均数、最大和及最小差值等问
2025-11-26 21:48:00
734
原创 反转链表的五种方法
本文介绍了反转链表的五种方法:头插法通过创建新链表逐个插入节点实现反转;栈方法利用栈的先进后出特性完成反转;迭代法使用三指针逐步修改节点指向;递归法从链表末端开始向前反转;就地反转优化迭代法,使用双指针实现简洁反转。每种方法均附有代码实现和图解说明,帮助理解指针操作和递归思想,适用于不同面试场景。掌握这些方法能深入理解链表操作,提升算法能力。
2025-11-23 16:25:59
254
原创 栈(Stack)和队列(Queue):概念、实现与应用
栈与队列摘要 栈是一种后进先出(LIFO)的线性数据结构,只能在栈顶进行插入和删除操作。在数组中实现栈时,通过维护栈顶索引实现入栈(push)、出栈(pop)、获取栈顶元素(top)等操作。栈在数组尾部插入数据效率较高,而在链表头部插入数据更高效。栈的基本操作包括判断栈是否为空(empty)、获取栈大小(size)等,并需要注意内存管理,及时销毁栈结构。测试代码展示了栈的创建、入栈、出栈等操作的完整流程。
2025-11-13 18:51:53
650
原创 针对入门小白的“C语言文件操作”
本文介绍了C语言文件操作的基本概念和使用方法。文件分为程序文件和数据文件,重点讲解了数据文件的操作流程:打开、读写和关闭文件。详细说明了文件指针FILE的使用,演示了常见的文件操作函数,包括fputc、fgetc、fputs、fgets、fprintf、fscanf、fwrite和fread等。通过实例代码展示了如何实现字符、字符串、结构体等数据的读写操作,并区分了文本模式和二进制模式。文章强调了文件操作对数据持久化存储的重要性,是C语言连接程序与外部世界的关键桥梁。
2025-11-09 15:38:02
712
原创 C语言文件操作:从入门到精通
本文介绍了C语言文件操作的基本概念和常用函数。文件是存储在计算机上的相关信息集合,可分为程序文件和数据文件。文件操作主要通过文件指针(FILE*)实现,基本流程包括打开、读写和关闭文件。详细讲解了fopen、fclose等基础操作函数,并给出fputc、fgetc、fputs、fgets、fprintf、fscanf、fwrite、fread等常用文件I/O函数的具体使用示例。通过文件操作,程序可以将运行结果永久保存,实现数据共享和批量处理。文中每个函数都配有代码示例和运行结果展示,帮助理解各类文件操作的应
2025-11-05 22:30:00
840
原创 C语言实现单链表:增删改查的艺术
本文介绍了链表的基本概念及其与线性表的区别。链表是一种非连续存储的线性数据结构,通过指针连接各个节点。文章首先解释了线性表的定义和基本操作(查找、插入、删除),并指出数组在插入/删除时的效率问题。然后重点阐述了链表的组成要素(节点、头指针等)、分类方式(单/双向链表)以及优缺点比较。其中单链表被作为重点讲解,包括创建方法和增加节点的操作实现。链表适合频繁增删数据的场景,而数组则更擅长快速查找,二者各有适用场景。文章通过代码示例展示了链表的基本操作实现。
2025-10-30 21:49:32
683
原创 从零开始的C语言结构体——超级适合C语言初学者的结构体学习指南来啦!
本文介绍了C语言中结构体的基本概念和使用方法。结构体(struct)是一种将不同类型数据组合成单一类型的数据结构,用于封装相关数据。文章详细讲解了结构体的定义、初始化、成员访问(使用.和->操作符)以及内存对齐规则(考虑成员大小和整数倍地址)。通过学生信息管理的实例,展示了结构体如何有效组织复杂数据。最后对比了结构体传参的两种方式:值传递(安全但效率低)和指针传递(高效但需谨慎修改原数据),并给出了选择建议。结构体作为C语言重要特性,能显著提高代码组织性和可读性。
2025-10-26 00:18:32
1053
原创 从零开始的C语言指针——超级适合C语言初学者的指针学习指南来啦!
本文系统介绍了C语言中指针的核心概念与应用。指针本质是存储内存地址的变量,通过解引用可访问目标数据。文章详细讲解了指针类型、野指针成因及规避方法、指针运算规则,并通过快递单的形象比喻帮助理解。同时阐述了指针与数组的关系、二级指针原理,以及指针数组和数组指针的关键区别。指针在动态内存分配、数据结构、函数传参等方面有重要应用,是C语言的核心特性之一。正确使用指针需要掌握其访问权限、运算规则及相关注意事项。
2025-10-25 21:36:59
845
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅