自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 栈和队列的知识点及代码

本文系统介绍了栈和队列两种基础数据结构。栈采用LIFO原则,通过动态数组实现,支持push、pop等操作;队列遵循FIFO原则,使用链表实现,包含入队、出队等功能。文章详细展示了两种结构的代码实现,包括初始化、增删操作和内存管理。学习重点在于理解指针操作和边界条件处理,为后续算法学习奠定基础。建议读者动手实践代码实现,掌握核心原理。

2026-02-25 19:15:22 601

原创 【数据结构系列04】随机链表的复制、环形链表I、环形链表||

本文摘要: 本文通过三道链表经典题目分析链表操作技巧:1)随机链表复制采用原地复制+拆分法,三步操作实现O(1)空间复杂度;2)环形链表I使用快慢指针判断环存在,数学证明步长差为1时必相遇;3)环形链表II在相遇后重置指针,通过数学推导找到环入口。文章对比了各解法的时间/空间复杂度,强调边界条件处理和最优解选择,并预告下期将探讨栈和队列相关问题。核心收获包括原地复制法、快慢指针应用及面试解题技巧。

2026-02-25 19:13:20 933

原创 【数据结构系列03】链表的回文解构、相交链表

本文探讨了链表操作中的两个经典问题:回文结构判断和相交链表查找。针对回文结构问题,提出了两种解法:数组辅助法(时间O(n),空间O(n))和快慢指针+反转法(时间O(n),空间O(1))。相交链表问题则介绍了暴力解法(时间O(m*n))和双指针法(时间O(m+n))。通过对比分析,得出双指针法和快慢指针+反转法是最优解。文章还预告了下期将探讨的链表进阶问题,包括带随机指针的链表复制、环检测及环入口查找等。

2026-02-16 21:24:59 940

原创 【数据结构系列02】轮转数组、返回倒数第k个节点

本文分析了轮转数组和返回链表倒数第k个节点两道经典问题的解法。对于轮转数组,比较了暴力移位法(O(k×n))、三次翻转法(O(n))和额外数组法(O(n))三种方法的优劣,指出三次翻转法是最优解。对于链表问题,探讨了数组存储法(O(n))、两次遍历法(O(n))和快慢指针法(O(n))三种方案,推荐使用快慢指针法。文章强调掌握复杂度分析对选择最优解法的重要性,并预告下期将探讨链表公共节点和回文结构问题。核心收获包括:三次翻转法的巧妙应用、快慢指针的高效性、取模运算的关键作用以及VLA的兼容性问题。

2026-02-16 20:24:20 677

原创 【数据结构系列01】时间复杂度和空间复杂度:消失的数字

本文分析了力扣面试题"消失的数字"的三种解法。思路1通过排序后遍历查找,时间复杂度O(nlogn);思路2利用数学求和相减,时间复杂度O(n)但有溢出风险;思路3采用异或运算,时间复杂度O(n)且无溢出,是最优解。通过对比展示了不同算法在效率上的差异,强调了复杂度分析的重要性,并介绍了异或运算的特性。建议读者动手实践以体会算法差异,为后续学习数据结构打下基础。

2026-02-15 20:54:40 449

原创 算法的时间复杂度和空间复杂度

摘要:算法效率通过时间复杂度和空间复杂度衡量。时间复杂度描述算法执行次数与问题规模N的关系,采用大O渐进表示法(如O(N²))简化分析。空间复杂度计算算法运行时额外申请的空间。常见复杂度排序为O(1)<O(logN)<O(N)<O(NlogN)<O(N²)<O(2^N)。实际应用中通常关注最坏情况下的性能,如冒泡排序最坏时间复杂度为O(N²),空间复杂度为O(1)。斐波那契数列递归实现虽简洁但效率低(O(2^N)),体现了算法设计需兼顾效率与简洁性。

2026-02-15 20:53:03 862

原创 贪吃蛇及相关知识点讲解

本文详细介绍了使用C语言开发控制台贪吃蛇游戏的全过程。主要内容包括:1) 游戏设计思路,采用模块化架构划分功能模块;2) 关键技术实现,如链表管理蛇身、控制台API操作、键盘输入处理等;3) 核心功能实现步骤,包括初始化、游戏循环、碰撞检测等;4) 增强游戏体验的技巧,如宽字符显示、速度调节等。通过本项目可以学习到游戏开发的基本模式、数据结构应用和Windows控制台编程技巧,为后续更复杂的游戏开发奠定基础。

2026-02-01 17:47:56 733

原创 c语言题目之字符串左旋转的三种实现方法详解

本文介绍了字符串左旋转问题的三种实现方法:1)暴力循环法通过逐个字符移动实现,时间复杂度O(n^2);2)拼接法利用临时数组拼接子串,时间复杂度O(n)但需额外空间;3)逆序法通过三次局部反转完成旋转,时空复杂度均为O(n)且无需额外空间。分析表明,暴力法适合教学,拼接法适合常规应用,逆序法则是处理大数据的最优解。不同方法各具特点,开发者应根据具体需求选择合适方案。

2025-11-29 21:09:03 1069

原创 c语言题目之字符·逆序

该程序实现字符串反转功能,使用双指针法交换字符位置完成反转。主函数循环读取输入行,调用reverse函数处理后输出结果。关键点包括:1. reverse函数通过左右指针交换字符直至相遇;2. 使用gets读取输入(存在缓冲区溢出风险);3. 每次循环后用memset清空数组(可优化为仅置首字符为'\0')。建议改进:改用fgets提高安全性,优化清空数组操作效率。程序展现了字符串处理的基本方法,但需注意输入安全性和性能优化。

2025-11-29 13:30:52 651

原创 指针深入第四弹--sizeof和strlen的对比、数组和指针笔试题解析、指针运算笔试题解析

本文对比了C语言中sizeof和strlen的区别:sizeof是运算符,计算变量或类型的内存大小(字节);strlen是库函数,计算字符串长度直到'\0'。重点解析了两者在数组操作中的不同表现:sizeof计算数组总大小,而strlen依赖'\0'结束符。文章还通过多个指针运算实例,演示了数组地址运算规则,包括二维数组的行指针操作和指针类型转换的影响。掌握这些区别对正确使用内存操作和避免越界访问至关重要,是C语言编程和笔试面试的核心知识点。

2025-11-07 22:50:38 1281 1

原创 指针深入第三弹--回调函数,qsort函数使用的运用

本文深入讲解了回调函数的概念及其在C语言编程中的应用。回调函数是通过函数指针调用的函数,当特定事件发生时由另一方调用。文章以整型计算器和qsort函数为例,详细演示了如何定义和使用回调函数,包括整型和结构体数据的比较方法。重点剖析了qsort的参数和使用方法,并实现了基于冒泡排序的qsort模拟版本。通过实例展示了如何使代码更灵活、可扩展,体现了回调函数在实现多态性方面的重要作用。这些知识不仅提升了算法实现能力,也为理解高级编程概念奠定了基础。

2025-11-02 22:43:29 1272

原创 指针深入第二弹--字符指针、数组指针、函数指针、函数指针数组、转移表的理解加运用

本文系统探讨了C/C++中的指针高级应用,包括字符指针、数组指针和函数指针的使用。重点分析了字符串处理时解引用的注意事项,详细解析了数组指针变量定义和二维数组传参机制。深入讲解了函数指针变量的创建与调用方式,并通过计算器案例展示了函数指针数组构建转移表的实用技巧。文章还对比了typedef与#define在指针重命名中的区别,强调了指针操作中类型匹配的重要性。这些知识点为编写高效灵活的程序提供了理论基础,是掌握C/C++核心编程能力的关键内容。

2025-11-01 23:16:47 1318

原创 指针深入第一弹--指针访问数组、冒泡排序、指针数组、模拟二维数组等的运用

本文围绕数组名与指针的关系展开,深入讲解了如何使用指针访问数组元素一维数组传参的本质(实为传递指针),以及如何利用指针实现经典的冒泡排序算法。进一步地,我们探讨了二级指针的概念与使用场景,介绍了指针数组的结构与应用,并通过指针数组模拟了二维数组的访问方式。通过本篇文章,你应该对以下内容有了更清晰的理解:数组名在多数情况下被视为指向其首元素的指针;指针与数组的紧密关系使得通过指针遍历和操作数组成为可能;函数参数中传递数组实际上传递的是指针,因此函数内可修改原数组;

2025-10-27 22:14:20 867

原创 指针的基本内容--操作符、void*、const修饰,野指针、指针运算,assert断言等的相关讲解

本文深入探讨了C语言指针的核心概念与应用。首先解析了内存编址原理,指出指针本质是内存地址。随后详细讲解了指针变量的定义、解引用操作符()的使用方法,以及指针类型的意义(决定访问权限和步长)。文章还介绍了const修饰指针的三种方式、void指针的特性,以及指针运算(加减整数、指针相减、关系运算)。针对野指针问题,提出了初始化、越界检查和assert断言等解决方案。最后通过模拟strlen函数和swap函数,对比了传值调用与传址调用的区别,强调指针在函数参数传递中的重要作用。

2025-10-26 15:51:03 1108

原创 操作符详解--进制转换,移位,逗号,整型提升及优先级

本文系统介绍了C语言操作符的分类体系,包括算术、位、逻辑等操作符的使用方法。重点讲解了二进制转换原理、原码/反码/补码表示,以及移位操作符的应用场景。深入分析了操作符优先级和结合性对表达式求值的影响,探讨了整型提升和算术转换的底层机制。掌握这些知识有助于编写高效代码,避免常见陷阱,是成为优秀C程序员的基础。文章还详细说明了各种操作符的具体运算规则和注意事项。

2025-09-21 17:27:01 1341

原创 递归之n的阶乘与斐波那契数列

C语言函数递归的核心概念包括:递归通过函数自调用来解决问题,需满足两个条件:存在终止条件和每次调用都逼近终止条件。文中通过阶乘计算和整数逐位打印两个案例,展示了递归的实现方式及调用栈原理,同时指出递归可能导致栈溢出的风险。建议在逻辑简单且深度可控时使用递归,否则应改用迭代方式。特别介绍了尾递归的优化特性,可将空间复杂度降至O(1)。编程时应根据问题特性在递归的简洁性与迭代的效率间权衡选择。

2025-09-20 09:00:00 1371

原创 字符串与循环易混淆点和易错点

循环体内的后续代码都不会执行。

2025-09-19 11:30:36 1040

原创 函数的运用

本文系统介绍了C语言中函数的核心概念与应用,主要内容包括:1. 函数的基本概念与分类(库函数与自定义函数);2. 函数参数传递机制(形参与实参的关系及区别);3. 数组作为函数参数的特殊性;4. 嵌套调用和链式访问两种高级使用方式;5. 函数的声明与调用规则(单文件与多文件组织);6. 静态库的引入与使用方法;7. static和extern关键字对变量和函数的作用域及生命周期的影响。通过全面讲解这些关键知识点,帮助读者掌握函数这一程序设计核心工具,提升代码的模块化程度和复用性。

2025-09-13 11:23:05 874

原创 有关数组的习题

本文介绍了两种处理数组的编程技巧:1. 字符从两端向中间汇聚的动态效果实现,通过逐步替换数组元素并配合Sleep()和system("cls")实现动画效果;2. 二分查找算法在有序数组中的应用,相比遍历查找显著提高效率。文章详细说明了两种方法的实现原理和代码细节,包括头文件引用、变量定义、循环控制等关键点,并特别提醒了二分查找中防止数据溢出的优化方法。通过具体代码示例展示了如何正确实现这些功能,帮助读者理解数组操作的基本原理和优化思路。

2025-09-07 22:27:36 930

原创 数组的创建和使用

本文系统介绍了C语言中数组的核心概念,主要包括:一维数组的格式定义、初始化方式、类型特性、下标访问规则及内存存储机制;二维数组的结构特点、初始化方法和内存布局规律;以及C99标准引入的变长数组特性。重点解析了数组在内存中的连续存储特性、下标与元素对应关系、行优先存储原则等核心知识点,并提供了完整的代码示例演示数组的输入输出操作。文章强调数组作为基础数据结构的重要性,建议通过实践编程加深理解,为后续学习指针等高级主题奠定基础。

2025-09-03 20:43:48 1204

原创 分支与循环(下)--随机数的·生成

rand()函数:生成伪随机数的基础函数srand()函数:设置随机数种子的关键步骤time(NULL):获取时间戳作为种子的最佳实践范围控制公式:灵活生成任意区间的随机数关键技巧程序开始时调用一次srand((unsigned int)time(NULL))不要重复初始化种子,不要忘记包含头文件希望本文能帮助你在c语言编程中更好的使用随机数功能!如有任何问题,欢迎在评论区留言讨论。

2025-09-02 19:03:22 559

原创 分支和循环(上)

本文系统讲解了C语言的选择结构和循环结构。选择结构部分详细介绍了if语句、switch语句。循环结构部分分析了while、for和do...while三种循环的执行流程及区别,重点说明了break和continue在不同循环中的作用差异。此外,还介绍了常用操作符的使用技巧,以及goto语句的适用场景。文章强调编程要注重代码可读性,合理使用大括号明确逻辑结构,避免编写过于复杂的表达式。

2025-08-31 23:09:21 1146

原创 c语言入门篇

本文介绍了C语言的学习基础。作为底层编程语言,C语言需要编译器转换代码。推荐使用VS2022集成开发环境,它功能全面且操作简便。文章讲解了C程序的基本结构:源文件(.c)和头文件(.h)、main函数作为程序入口的重要性、printf输出函数的使用方法等基础概念,并列举了32个C语言关键字。最后强调编写规范:使用英文符号、main函数结尾加return 0、注意括号闭合等基础要点。这些知识为后续C语言学习打下坚实基础。

2025-08-30 16:12:54 1035

空空如也

空空如也

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

TA关注的人

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