自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【数据结构】哈希扩展学习

本文介绍了位图和布隆过滤器两种数据结构及其在海量数据处理中的应用。位图通过直接映射整数到bit位实现高效查找,适用于整数判断问题,如处理40亿数字查找。布隆过滤器则通过多个哈希函数映射非整型数据,降低冲突率,应用于URL去重、垃圾邮件过滤等场景。文章详细分析了两种结构的实现原理、误判率推导及代码实现,并探讨了海量数据处理问题的解决方案,如哈希切分处理大文件交集和统计IP出现频率。这些方法在内存有限的情况下,能有效处理大规模数据查询和统计问题。

2025-08-08 21:14:40 933 57

原创 【C++】unordered系列容器使用及封装

本文详细介绍了C++中unordered_map和unordered_set的底层实现原理及封装方法。主要内容包括:1. 使用差异分析:对比了哈希表实现与红黑树实现的容器在性能、迭代器和key要求上的区别;2. 哈希表核心实现:通过哈希桶结构完成基础功能,重点解决了模板参数处理和iterator实现难点;3. 容器封装方法:通过复用哈希表模板,分别封装unordered_map和unordered_set,支持迭代器遍历和[]操作符。实现过程中解决了哈希冲突处理、扩容机制、const迭代器等关键技术问题,最

2025-08-06 14:57:22 1077 43

原创 【数据结构】哈希表实现

哈希是一种通过哈希函数将关键字映射到存储位置的数据组织方式,核心思想是建立关键字与位置的直接映射关系以实现快速查找。本文系统介绍了哈希的核心概念:哈希冲突(不同关键字映射到同一位置)、负载因子(衡量空间利用率与冲突概率的指标)、以及多种哈希函数设计方法(直接定址法、除留余数法、乘法散列法等)。重点探讨了两种冲突处理策略:开放定址法(线性探测、二次探测)和链地址法(拉链法),并提供了完整的C++代码实现。特别针对不同数据类型(如字符串)设计了特化的哈希转换方法,通过质数扩容策略优化性能。文章指出实际应用中需权

2025-08-03 15:22:31 1349 45

原创 【C++】封装红黑树实现map和set

本文分析了STL中map和set的实现原理,基于红黑树的复用框架。通过源码解析,展示了map和set如何共享同一红黑树模板,通过不同模板参数实现key和key-value两种模型。重点介绍了迭代器的实现思路,包括++和--操作符的中序遍历逻辑。文章详细讲解了map支持[]操作符的实现方法,以及如何保证key不可修改而value可修改的特性。最后提供了完整的map和set模拟实现代码,包括红黑树的插入、查找、旋转等核心操作,以及迭代器的封装实现。整个设计通过模板和仿函数实现了高度复用,体现了STL的泛型编程思

2025-07-30 13:43:33 725 42

原创 【C++】红黑树实现

红黑树是一种近似平衡的二叉搜索树,通过颜色约束确保最长路径不超过最短路径的2倍。其核心规则包括:根节点为黑、红节点子节点必为黑、各路径黑节点数相同。插入时通过变色和旋转(单旋/双旋)维护平衡,分为三种情况处理:当叔叔节点为红时变色向上调整;否则根据父子位置关系进行旋转。相比AVL树,红黑树旋转次数更少,实际应用更广泛。验证时需检查颜色规则和路径黑节点数是否一致。删除操作较为复杂,可参考专业书籍。红黑树保证了O(logN)的查找效率,是高效的平衡树结构。

2025-07-27 11:12:24 1260 17

原创 【数据结构】二叉树进阶算法题

本文介绍了二叉树相关算法题的C++实现,主要包括以下内容:1. 二叉树转字符串(606题):通过前序遍历处理空子树括号问题,利用C++字符串拼接简化操作;2. 层序遍历(102/107题):使用队列实现,通过记录每层节点数解决二维数组存储问题;3. 最近公共祖先(236题):提供两种解法,分别是递归判断节点位置和路径记录法;4. 二叉搜索树转双向链表(LCR155题):中序遍历时修改指针关系实现原地转换;5. 根据遍历序列构建二叉树(105/106题):利用前序/后序确定根节点,中序划分左右子树;6. 非递

2025-07-24 23:16:37 1166 36

原创 【C++】继承和多态扩展学习

本文深入探讨了C++中的菱形继承与虚函数表实现原理。在菱形继承场景中,通过虚继承和虚基表机制解决了数据冗余和二义性问题,虚基表记录了虚基类实例的偏移量。文章详细分析了单继承和多继承下的虚函数表结构,指出监视窗口可能隐藏真实内存布局,需通过内存窗口和特殊代码才能探查实际虚表内容。在多继承中,派生类会维护多个虚表,未重写的虚函数会被放入首个基类的虚表。特别强调了菱形继承在工程中的不推荐性,并解答了11个关于继承和多态的常见面试问题,包括虚函数与内联、静态成员的兼容性等。通过代码实例和内存模型分析,揭示了C++继

2025-07-22 21:14:02 1259 31

原创 飞算JavaAI:手动写代码 VS 飞算JavaAI辅助开发:效率差距竟如此夸张?

《飞算JavaAI测评:编程小白也能轻松开发》文章摘要:本文通过对比测试展示了飞算JavaAI在SpringBoot项目开发中的效率优势。手动开发CRUD接口耗时约2.5小时,而借助飞算JavaAI仅需30分钟即可完成相同功能。测评显示,AI在项目搭建、代码生成等环节显著提升效率,错误率更低,特别适合初学者快速上手。作者认为飞算JavaAI有效降低了学习门槛,使"写不出代码"变成"看得懂、改得了、写得快",同时强调需理解AI生成代码的原理而非简单复制。文末提供了使用建

2025-07-21 14:17:05 1047 10

原创 【C++】stack和queue拓展学习

本文分析了SGI-STL30中反向迭代器的实现原理,通过适配器模式复用正向迭代器代码实现反向遍历功能。反向迭代器通过封装正向迭代器,重载运算符实现反向操作,其中operator*访问前一个位置的特性实现了与正向迭代器的对称性。文章还介绍了栈和队列的应用实例——计算器实现,包括中缀转后缀表达式的算法思路和具体实现。通过运算符优先级比较和递归处理括号,将中缀表达式转换为后缀表达式后,利用栈结构实现了表达式的求值计算。最后针对LeetCode计算器题目,处理了负数和空格的特殊情况,完成了完整计算器功能的实现。

2025-07-21 12:59:38 1198 24

原创 【数据结构】AVL树

AVL树是一种自平衡二叉搜索树,由Adelson-Velsky和Landis于1962年提出。它通过平衡因子(右子树高度减左子树高度)控制每个节点的左右子树高度差不超过1,从而保证树的高度平衡。本文详细介绍了AVL树的结构实现,包括节点定义、插入操作(遵循二叉搜索树规则后更新平衡因子)、四种旋转操作(左单旋、右单旋、左右双旋和右左双旋)来维持平衡。通过代码实现和测试验证了AVL树的平衡性,其查找、插入性能稳定在O(logN)。文章还讨论了平衡因子更新的规则和旋转后平衡因子的调整策略,但未展开删除操作的实现。

2025-07-17 13:59:40 857 25

原创 【C++】map和set的使用

目录1. 序列式容器和关联式容器2. set系列的使用2.1 set和multiset参考文档 - C++ Reference2.2 set类的介绍2.3 set的构造和迭代器2.4 set的增删查2.5 insert和迭代器遍历使用样例:2.6 find和erase使用样例:2.7 multiset和set的差异2.8.lower_bound和upper_bound练习:2.8 349. 两个数组的交集 - 力扣(LeetCode)2.9 142. 环形链表 II - 力扣(LeetCode)3. map

2025-03-05 21:39:20 1957 60

原创 【数据结构】二叉搜索树

本文主要介绍二叉搜索树,其概念为左子树节点值小于根节点,右子树节点值大于根节点,插入时依此规则确定位置。性能方面,最优时类似完全二叉树,时间复杂度低;最差时退化为单支树,时间复杂度高,平衡二叉搜索树等为此而生。实现上,插入操作在树空或遍历找到合适位置后插入新节点;查找是依据节点值大小比较来确定查找方向;删除需分多种情况处理,以维持二叉搜索树特性。使用场景包括 key 搜索场景如小区车库车牌识别、文章单词拼写检查,以及 key/value 搜索场景如中英互译字典、商场车库计费、文章单词计数等,还给出了相应代码

2025-01-09 16:38:45 2004 51

原创 【C++】多态

本文围绕 C++ 多态展开,涵盖概念、动态多态的定义及实现、纯虚函数与抽象类、动态多态原理等内容。先是通过实例引出多态概念,接着介绍动态多态构成条件,包括虚函数、重写规则等,还探讨了如协变、析构函数重写、override 和 final 关键字等相关问题,以及重载、重写、隐藏的对比。对于纯虚函数和抽象类,解释其特点与关系,并以车的示例说明。在动态多态原理部分,介绍虚函数表指针,阐述动态多态实现方式、动态绑定与静态绑定,以及虚函数表的构成与作用等,还展示相关代码及运行结果辅助理解。

2024-12-28 15:20:28 2738 55

原创 【C++】继承

本文全面介绍 C++ 继承相关内容。包括继承的概念及定义,用实例展示如何通过继承实现代码复用及不同继承方式下基类成员访问变化;基类和派生类转换,说明子类可赋值给基类但反之不行;继承作用域中的隐藏规则及相关选择题;派生类默认成员函数生成方式及不能被继承的类的实现;继承与友元、静态成员的关系;多继承及菱形继承问题,如虚继承解决数据冗余和二义性、指针偏移问题及 IO 库中的菱形虚拟继承;最后对比了继承(is - a)和组合(has - a)的关系。

2024-12-11 19:54:32 2504 62

原创 【C++】string类的模拟实现

本文围绕 C++ 中 string 类展开。首先介绍了 string 类的模拟实现,包括构造函数、浅拷贝与深拷贝问题,以及拷贝构造和赋值运算符重载的传统与现代写法。现代写法利用临时对象和自动析构特性,提高效率与资源利用率。还介绍了 string 类的其他接口如迭代器和各种操作函数等。接着说明了在 vs 和 g++ 下 string 的结构特点。此外提到了写时拷贝的概念及读取缺陷。最后给出了扩展阅读方向。

2024-12-02 22:56:28 1703 65

原创 【C++】模板进阶

本文介绍了 C++ 中的非类型模板参数、模板特化和模板分离编译。非类型模板参数可作为常量使用,能创建不同大小的静态数据结构。模板特化包括函数模板特化和类模板特化,用于处理特殊情况,其中函数模板特化不推荐使用,类模板特化有全特化和偏特化等形式。模板分离编译是将程序分为多个源文件分别编译,对于模板的分离编译可能会出现问题,可通过一些方法解决。文章还介绍了模板的一些应用示例及注意事项。

2024-12-02 19:15:56 1360 26

原创 【C++】stack和queue

本文介绍 C++ 中的 stack、queue 和 priority_queue。stack 模拟数据结构栈,有常用接口如 push、pop 等,底层默认容器为 deque。queue 模拟队列,先进先出,底层也可用 deque,介绍了 deque 的原理、优势缺陷及为何作为 stack 和 queue 底层容器。priority_queue 本质是堆,默认大堆,可通过仿函数控制大小堆及自定义类型比较,展示了在 OJ 中的用法和模拟实现,通过对 vector 封装和堆排序算法实现。

2024-11-30 22:24:26 2303 60

原创 每日一练:【动态规划算法】斐波那契数列模型之使用最小花费爬楼梯(easy)

本文介绍“746. 使用最小花费爬楼梯”题目。该题楼顶为数组外下一个位置,用动态规划有两种解法。解法一设 dp[i]是以 i 为结尾跳到 i 台阶的最小花费,通过 dp[i - 1]、dp[i - 2]得出状态转移方程,初始化 dp[0]和 dp[1]后从左往右填表,返回 dp[n]。解法二设 dp[i]为从 i 出发到楼顶的最小花费,根据 dp[i + 1]、dp[i + 2]确定状态转移方程,初始化 dp[n - 2]和 dp[n - 1]后从右往左填表,返回 min(dp[0],dp[1])。

2024-11-24 15:46:49 1060 38

原创 每日一练:【优先算法】双指针之快乐数(medium)

本文介绍 “202. 快乐数” 题目。该题对正整数进行每个位置数字平方和的变换,分析得出一个数经多次变换要么变为 1,要么无限循环。采用快慢指针方法解决,先介绍前置知识,即快慢指针在带环链表中一定会相遇且相遇位置在环节点。本题的计算过程可视为带环链表,通过模拟快慢指针,每次 slow 走一步、fast 走两步,判断是否会相遇于值为 1 的节点,给出了相应算法代码。

2024-11-24 13:57:57 873 22

原创 【C++】list容器及其模拟实现

本文介绍了 C++ 中的 list。首先讲解了 list 的介绍与使用,包括底层结构为带头双向循环链表,常见接口如构造函数、迭代器用法、容量操作、元素访问、修改操作等,还介绍了迭代器失效问题及处理方法。接着模拟实现了 list,包括节点结构、功能接口、迭代器实现、构造与析构函数等。此外,还介绍了 list 的反向迭代器实现,并对比了 list 与 vector 的底层结构、特性及应用场景。

2024-11-24 12:12:41 2122 31

原创 每日一练:【动态规划算法】斐波那契数列模型之三步问题(easy)

本文介绍 “面试题 08.01. 三步问题”。题目为小孩跳台阶问题,可一次跳一层、两层或三层台阶,求跳到 n 阶的方法数并取模 1e9+7。用动态规划求解,状态表示以第 i 位置结尾,dp [i] 存到达 i 位置的方法数。状态转移方程为 dp [i]=dp [i - 1]+dp [i - 2]+dp [i - 3]。初始化 dp [1]=1、dp [2]=2、dp [3]=4。填表顺序从左往右,返回值为 dp [n]。给出算法代码,强调取模时每计算一次都需取模,避免溢出导致答案错误。

2024-11-21 01:05:43 694 33

原创 每日一练:【优先算法】双指针之复写零(easy)

本文介绍 “1089. 复写零” 题目。该题要求遇到一个 0 就复写一次,原数组元素后移。先分析异地做法,再尝试原地操作,发现双指针正向走会覆盖非 0 数,改为从后往前走,让 dest 先走,通过模拟异地操作找到新数组最后一个位置,处理可能出现的越界情况,最终实现原地复写零操作,给出了相应算法代码。

2024-11-21 00:33:08 677 12

原创 每日一练:【动态规划算法】斐波那契数列模型之第 N 个泰波那契数(easy)

本文介绍 “1137. 第 N 个泰波那契数” 题目。该题要求求出第 n 个泰波那契数,采用动态规划算法求解。包括状态表示为以第 i 个位置为结尾,dp 表第 i 个位置的值表示第 i 个泰波那契的值;状态转移方程为 dp [i]=dp [i - 1]+dp [i - 2]+dp [i - 3];dp 表初始化 dp [0]=0、dp [1]=dp [2]=1;填表顺序从左往右;返回值为 dp [n]。还介绍了滚动数组优化,利用只需要前三个位置的值,避免开辟 O (n) 空间,用几个变量迭代实现相同功能。

2024-11-19 18:16:20 547 5

原创 每日一练:【优先算法】双指针之移动零(easy)

本文以 “283. 移动零” 题目为例介绍双指针概念。该题要求将数组中的非零元素移到前面且保持相对位置不变,零放在后面且不要求相对顺序。采用双指针方法,通过同向移动指针将数组分为已处理非零数、待放零的区间和未处理数据三部分。每次遇到零,src 指针移动,dest 不动;遇到非零数,先移动 dest 指向零,再交换 dest 与 src 指向的值并移动 src。当 src 遍历完数组,所有数据处理完毕。此方法基于数组分块思想,实现原地操作且空间复杂度为 0。

2024-11-19 17:45:53 786 3

原创 【C++】vector

本文介绍了 C++ 中的 vector。首先讲解了 vector 的介绍与使用,包括各种构造函数、迭代器用法、空间增长问题、增删查改操作及迭代器失效问题,还介绍了 vector 在 OJ 中的使用。接着深度剖析并模拟实现了 vector 的核心框架接口,分析了使用 memcpy 拷贝的问题及动态二维数组的理解,强调涉及资源管理时不能用 memcpy,展示了如何用 vector 构建动态二维数组。

2024-11-18 21:59:37 1380 15

原创 【C++】string类(附题)

本文介绍了 C++ 标准库中的 string 类。学习 string 类是因为 C 语言字符串有不足且实际中广泛使用 string 类。string 类类似字符容器,支持不同编码。文中讲解了 auto 和范围 for 的用法,以及 string 类的常用接口,包括构造、容量操作、访问遍历、修改操作和非成员函数等。还通过多个编程题目展示了 string 类的实际应用,如反转字母、找唯一字符、计算最后单词长度、验证回文、字符串相加、翻转字符串等,帮助读者深入理解 string 类的功能和用法。

2024-11-15 11:32:51 1276 10

原创 【C++】模板初阶

本文介绍了 C++ 模板编程基础。包括泛型编程,利用模板避免重复代码,实现通用功能;函数模板,有概念格式、原理实例化及参数匹配原则,可根据实参推演或显式指定类型;类模板,涵盖定义格式、实例化方法及按需实例化问题,不建议声明定义分离,按需实例化时使用成员函数才实例化,不影响基本语法检查。总之,模板为 C++ 编程提供了强大的代码复用手段,方便实现通用功能和适应不同类型需求。

2024-11-10 14:13:40 1100 8

原创 【C++】C/C++内存管理

本文深入讲解了 C/C++ 的内存分布以及不同的内存管理方式。内容涵盖 C 语言中的动态内存管理函数(malloc/calloc/realloc/free),C++ 的内存管理方式(new/delete 和 operator new/operator delete),new 和 delete 的实现原理,定位 new 表达式以及 malloc/free 和 new/delete 的区别等多个重要方面。通过丰富的代码示例和详细的解释,为读者清晰地呈现了 C/C++ 内存管理的核心知识和关键要点。

2024-11-04 21:54:05 1023 16

原创 【C++】类和对象(附题)

本文详细介绍了 C++ 中类的多个重要概念,包括类的定义、实例化、this 指针、与 C 语言实现 Stack 对比、类的默认成员函数、构造函数、析构函数、拷贝构造函数、赋值运算符重载、取地址运算符重载、再探构造函数、类型转换、static 成员、友元、内部类、匿名对象和对象拷贝时的编译器优化等内容,为 C++ 学习者全面阐述了类相关的知识要点。

2024-10-24 14:32:02 1756 13

原创 【C++】C++基础

本文全面介绍 C++ 多个重要特性。包括 C++98 关键字,首个程序的 C 与 C++ 对比写法。详细阐述命名空间的价值、定义及使用方法,可解决命名冲突,能嵌套且多文件同名会合并。还涵盖 C++ 输入输出、缺省参数、函数重载、引用、内联函数和 nullptr。引用可简化传参,const 引用有特定用途。内联函数替代宏函数但要注意代码膨胀。nullptr 避免了 C++ 中 NULL 的风险。为 C++ 学习者提供了丰富的知识内容。

2024-10-02 20:07:54 1750 8

原创 【初阶数据结构】常见五大排序算法及部分算法优化讨论

本文全面介绍了排序的概念、常见排序算法的实现、复杂度及稳定性分析、选择题练习以及外排序之文件归并排序实现。排序可分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、归并排序、计数排序等。每种算法都详细阐述了其基本思想、实现步骤、算法复杂度、特性总结等内容。还分析了排序算法的稳定性,并通过选择题练习加深理解。最后介绍了外排序的概念和文件归并排序的实现方法,包括创建随机数据文件、思路分析和代码实现。

2024-09-15 23:24:00 1240 9

原创 【初阶数据结构】顺序表与链表的比较(附题)

本文主要对比了顺序表和带头双向循环链表的区别,包括存储空间、随机访问、插入操作、扩容问题以及缓存利用率等方面。顺序表在存储空间上物理连续,支持随机访问,但插入元素可能需搬移数据且扩容存在消耗和空间浪费问题;链表逻辑连续但物理不一定连续,可按需申请节点无需考虑扩容,在任意位置插入方便但不支持随机访问。在缓存利用率方面,顺序表缓存命中率高,链表因节点物理地址不连续易出现缓存污染导致命中率低。二者各有优劣,互为补充。

2024-08-22 16:30:43 899 4

原创 【初阶数据结构】算法复杂度

本文围绕算法效率展开,包括时间复杂度和空间复杂度以及复杂度相关的编程练习。首先阐述了衡量算法好坏的原因,引出算法复杂度概念,其包括时间和空间复杂度,如今一般更关注时间复杂度,介绍了时间复杂度的概念、大 O 渐进表示法、常见时间复杂度计算举例等内容,还分析了空间复杂度的计算规则及常见示例。最后通过复杂度的 OJ 练习,如消失的数字和旋转数组问题,展示了不同思路下的时间和空间复杂度差异及以空间换时间的常见做法。

2024-08-20 21:48:06 849 6

原创 【初阶数据结构】数据结构前言

本文介绍了数据结构和算法的基本概念、重要性以及学习方法。数据结构是计算机存储和组织数据的方式,算法是将输入转化为输出的计算步骤。其重要性体现在校招笔试和面试中,大厂笔试多为算法题且难度大,面试也常考算法及相关知识。在未来工作中,对程序员也至关重要。学习方法包括死磕代码和注意画图与思考。书籍及资料推荐有《剑指 offer》《程序员代码面试指南》和 LeetCode。

2024-08-18 08:39:41 467 2

原创 【初阶数据结构】链表(附题)

本文全面阐述链表相关内容。首先分析顺序表存在的问题,引出链表诞生的原因。接着详细介绍单链表,包括概念、结构、实现方法(如节点定义、各种插入删除操作、查找、在指定位置操作及销毁链表),并通过通讯录项目展示其应用。然后是链表 OJ,涵盖多种常见编程问题及思路。还介绍了链表的分类及实际常用结构。最后阐述双向链表,包括节点定义、各种操作实现(打印、申请节点、插入删除、查找、在指定位置操作、判空和销毁),为读者深入理解链表提供了丰富内容。

2024-08-17 22:35:00 1180 8

原创 【C++】C++前言

本文全面介绍了 C++ 语言。包括其定义为在 C 语言基础上引入面向对象概念的编程语言,涵盖面向过程与面向对象编程特点;发展历史可追溯至 1979 年,历经标准化等过程;版本不断更迭,有丰富的语法更新;提供了参考文档链接;阐述了其在编程语言排行榜中的地位、广泛的应用领域以及学习方法,如他人学习经验分享和个人学习建议,包括多总结、常看书、勤刷题及推荐书籍等。

2024-07-23 15:37:41 1691 12

原创 【初阶数据结构】二叉树(附题)

本文全面阐述树与二叉树。树是非线性数据结构,有根节点、子树等概念,可通过多种方式表示。二叉树是特殊的树,有满二叉树、完全二叉树等类型,性质明确,可顺序或链式存储。二叉树顺序结构围绕堆展开,包括堆的概念、实现及应用如堆排序和 TOP-K 问题。链式结构涵盖遍历方式及多种功能实现,如节点计数、查找、判断完全二叉树和求高度等,还给出相关 OJ 练习及解法,文末附二叉树创建销毁代码与队列实现代码。

2024-06-21 12:58:27 1094 5

原创 【初阶数据结构】栈和队列(附题目)

本文全面介绍栈和队列。栈是特殊线性表,只允许在固定一端操作,遵守后进先出原则。实现时一般用数组更优,介绍了栈的结构体及初始化、入栈出栈等操作函数。队列是特殊线性表,允许一端插入一端删除,先进先出。用链表实现更优,介绍了队列结构体及初始化、入队出队等操作。还给出了栈和队列的面试题解法,如括号匹配用栈实现,用队列实现栈和用栈实现队列,设计循环队列对比了数组和链表实现方式。文末附上了栈和队列的源码,包括头文件和源文件,方便理解和使用。

2024-05-30 00:18:00 2359 12

原创 【初阶数据结构】链表经典OJ(8道)

本文介绍了八个与链表相关的编程问题及解法。包括删除链表中特定值的节点、反转单链表、找出链表中间节点、获取链表倒数第 k 个节点、判断链表是否为回文结构、找出两个链表第一个公共节点、判断链表是否有环及返回入环第一个节点、实现链表的深度拷贝。每个问题都给出了详细的思路分析和 C 语言代码实现,利用了快慢指针等方法解决不同类型的链表问题。

2024-05-16 22:20:46 1263 6

原创 【C语言】项目实践-贪吃蛇小游戏(Windows环境的控制台下)

本文介绍用 C 语言实现贪吃蛇游戏,功能包括地图绘制、吃食物、撞墙 / 自身死亡、得分、加速减速、暂停等。技术要点含多种 C 语言特性及 Win32 API。补充知识有 Win32 API 操作及 C 语言国际化本地化。游戏实现分多个模块,初始化窗口等后,运行中按键检测、移动蛇身、判断状态,结束时释放资源并提示原因。还解决了重玩问题,给出参考代码及附录参考汉字字符集编码信息。

2024-05-04 23:33:04 1563 11

空空如也

空空如也

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

TA关注的人

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