- 博客(30)
- 收藏
- 关注
原创 活用下标,使用数组实现循环队列
有了类型就知道变量的内存大小和该往内存中存放什么数据(如是结构体,就知道存放哪些成员)。使用front、rear、k和a维护这块循环队列空间。front指向队头元素。rear指向队尾元素的下一个位置,也就是始终置空的位置。rear-1指向队尾元素。k代表队列长度。a存放数据的数组。int front;int rear;int k;int* a;//存放数据的数组。
2023-09-05 17:07:20
206
原创 基于两个队列实现栈,妙用空队列
主要通过双队列交替使用,保持一个队列动态为空,在入栈和出栈时进行适当的出队入队操作,可以实现栈的后进先出特性。充分利用了空队列在获取栈顶元素时的作用。
2023-08-28 14:51:30
179
原创 三指针法原地:合并两个有序数组
该算法使用三个指针分别指向两个输入数组的末尾以及输出数组的末尾,通过比较输入数组末尾元素的大小顺序并存入输出数组实现合并
2023-08-12 11:20:25
382
1
原创 原地双指针算法详解:删除有序数组中的重复项
通过原地双指针算法详细介绍了如何删除有序数组中的重复元素,使每个元素只出现一次。核心思路是使用快慢指针遍历数组,跳过重复元素,达到 去重的效果。
2023-08-12 10:21:31
154
原创 01双指针法:原地移除数组中值为某值的所有元素
提出一种原地在数组中移除特定值的所有元素的算法。该算法使用双指针技巧,一个指针遍历数组,一个指针记录目标索引。如果当前元素的值等于要移除的值,则跳过该元素;否则将其复制到目标索引,实现原地移除。
2023-08-12 09:16:36
114
原创 求数组缺失数字的两种算法
本文对数组缺失数字问题分析了两种算法思路——等差数列法和异或位运算法,并给出了C语言代码实现。等差数列法直观简单,通过求和方式找出缺失值;异或位运算法巧妙高效,通过异或操作找出缺失值。两种算法时间复杂度均为O(n),空间复杂度为O(1)
2023-08-11 20:48:56
240
原创 数组轮转的三步反转算法
本文讲解了数组轮转问题的三步反转算法。该算法的关键思路是:反转整个数组反转前k个元素反转后n-k个元素通过三次反转区间实现了数组的轮转。该算法时间复杂度为O(N),空间复杂度为O(1),效率高效。文中给出直观的图解,并配以代码实现,最后分析了算法复杂度。三步反转算法是数组轮转问题的典型解法。
2023-08-11 20:25:12
385
原创 图解顺序表:全面解析顺序表工作原理及C语言实现
本文通过详细的图文解析,让你深入理解顺序表的工作原理。全面对比静态和动态顺序表的区别,解析动态顺序表初始化、插入、删除、查找、修改等核心操作的实现思路。并用简洁的C语言代码示例,将顺序表的全部功能实现出来。通过本文你将深刻掌握顺序表的结构和行为,为学习更复杂的数据结构奠定基础。
2023-08-11 10:55:56
630
原创 学习函数的概念和用法,提高代码复用性和开发效率
本文介绍了函数的概念和用法,函数是一段封装代码的独立模块,可在程序中多次调用。通过函数可以实现代码的复用和模块化开发。文章详细介绍了函数的定义、分类、参数、返回值和调用等内容,并给出了具体示例和应用场景。学习和掌握函数的使用,可以提高代码的复用性和开发效率。
2023-08-09 20:50:49
153
原创 异或和等差求和分别实现数组中消失的数字的查找
本文介绍了两种在O(n)时间内找出数组中缺失的整数的算法。一种是利用等差数列的性质计算完整序列的总和,减去数组中的元素得到缺失的数字;另一种是利用异或位运算,先计算0~n完整序列的异或结果,再与数组各元素异或,即可得到缺失的数字
2023-08-06 20:02:05
306
原创 判断链表是否为回文结构的前后半段链表算法
算法通过找到链表的中间节点,反转后半段链表,最后比较前半段链表和反转后的后半段链表的节点值是否相等来判断链表是否为回文结构。
2023-08-01 21:14:32
246
1
原创 尾插法删除链表中指定元素的结点
本文介绍了如何删除链表中所有指定元素的结点的方法。通过遍历链表,将不需要删除的结点重新尾插到新链表中,并删除指定元素的结点。最后返回新链表的头结点。
2023-07-31 13:52:54
235
1
原创 C语言中for循环的应用场景和案例分析
本文介绍了C语言中for循环的应用场景和常见案例。首先,通过使用累加和累乘的例子,展示了如何使用for循环来进行计算和累加操作。其次,通过判断一个数是否为素数的例子,演示了如何使用标记变量和嵌套循环来解决复杂的问题
2023-07-29 20:32:45
1302
原创 循环语句概论:while、for和do while循环
循环语句在C语言中扮演着重要的角色,用于重复执行一段代码。本文介绍了C语言中常见的循环语句,包括while、for和do while循环。通过详细讲解它们的特点、基本结构和执行原理,帮助读者全面理解循环语句的用法与要点。此外,文章还讨论了循环语句中的break和continue关键字的应用场景,以及不同循环语句之间的对比。
2023-07-29 11:20:43
468
原创 链表分割算法-尾插法
本文介绍了一种使用尾插法实现链表分割的算法。通过遍历链表,将小于给定值x的结点尾插到一个新链表中,将大于等于x的结点尾插到另一个新链表中,然后将两个新链表按原始顺序合并起来,最后返回重排后的链表的头结点。该算法的时间复杂度为O(N),空间复杂度为O(1)
2023-07-24 21:25:57
251
原创 经典双指针法实现链表中倒数第k个结点的查找
本文介绍了一种通过双指针法查找链表中倒数第k个结点的方法。首先定义两个指针fast和slow,fast指针先移动k步,然后slow和fast指针一起移动,直到fast指针移动到链表末尾,此时slow指针指向倒数第k个结点。文章还对极端情况进行了处理,例如链表为空或者k大于链表长度的情况。最后给出了代码实现和复杂度分析。这种方法的时间复杂度为O(N),空间复杂度为O(1)。
2023-07-22 20:54:39
181
原创 scanf和getchar输入的详细分析:以确认密码为例
本文介绍了一个用于输入和确认密码的应用程序。首先,读取保存的密码。然后,使用循环清空输入缓冲区,以防止后续读取受到残留字符的干扰。最后,确认密码并验证是否成功清空缓冲区。文章还提供了相关的前置知识,包括scanf和getchar函数的用法。
2023-07-22 20:30:17
195
原创 寻找链表的中间节点的方法及应用
本文介绍了一种使用快慢指针寻找单链表中间节点的方法。通过定义两个指针,快指针每次走两步,慢指针每次走一步,当快指针或快指针的下一个节点为空时,慢指针指向的节点即为链表的中间节点。最后,本文进行了时间复杂度和空间复杂度的分析,并总结了快慢指针在链表问题中的应用。
2023-07-21 20:43:04
158
1
原创 链表合并算法优化:尾插较小节点的方法
本文介绍了一种优化算法,通过尾插较小的节点,来合并两个升序链表。算法的思路是使用两个指针分别指向两个链表的首节点,然后比较两个指针所指节点的值,将较小的节点逐个进行尾插操作到一个新的链表上。当其中一个链表先尾插结束时,直接将另一个链表剩余的节点进行尾插到新的链表上。该算法的时间复杂度为O(N+M),空间复杂度为O(1)
2023-07-21 14:36:25
216
1
原创 探索条件判断语句:语法、执行原理及if与switch比较
条件判断是编程中常用的一种技巧,本文将深入讨论条件判断语句的语法结构和执行原理,并比较if判断和switch判断的使用场景和特性。通过本文,你将深入了解条件判断在程序中的应用,以及如何选择最适合你的代码逻辑的条件判断方式。
2023-07-20 20:16:35
1398
1
原创 经典头插法反转一个单链表
本文介绍了如何使用头插法对单链表进行反转。通过定义一个指针cur指向当前节点和指针rhead保存新头节点的位置,实现了对链表的反转。同时,给出了具体的代码实现和复杂度分析。
2023-07-20 07:56:04
79
1
原创 寻找相交链表的起始节点的双指针方法
本文介绍了一种使用双指针方法来寻找两个单链表相交的起始节点的解决方案。通过定义两个尾指针,遍历找到两个链表的尾结点,并同时计算链表的长度。然后比较尾结点的地址,如果相同则说明链表相交,接下来将长指针先移动差距步,使得两个链表的指针处于相同位置,然后同时遍历两个链表并找到第一个地址相等的节点,该节点即为相交链表的起始节点。如果尾结点的地址不相同,则说明两个链表不相交。该方法的时间复杂度为O(N+M),其中N和M分别是两个链表的结点总数。并且该方法的空间复杂度为O(1)。
2023-07-18 08:24:37
249
1
原创 环形链表 - 返回入口点
给定一个链表,需要判断链表是否存在环,并找到入环的第一个节点。本文介绍了两种解决方法。方法一是将问题转化为链表相交问题。方法二是使用快慢指针。
2023-07-17 21:09:54
313
1
原创 判断链表是否有环的方法:快慢指针
本文介绍了判断链表是否有环的方法,即快慢指针。通过定义两个指针,一个每次前进一个节点,另一个每次前进两个节点,如果存在环,两个指针最终会相遇。文章提供了代码实现和复杂度分析,并对其细节进行了讨论。该方法的时间复杂度为O(n),空间复杂度为O(1)。通过本文,读者可以了解并应用这一链表环判断方法。
2023-07-17 09:20:58
411
1
原创 《变量探究:从定义到应用的全方位解析》
本文深入探讨了编程中的核心概念——变量。首先介绍了变量的定义、声明和命名规则,帮助读者正确理解和使用变量。其次,详细解释了变量的不同类型,包括全局变量、局部变量、静态变量和动态分配变量,并提供了相关示例代码。接着,解释了变量的作用域和生命周期,帮助读者理解变量在程序中的范围和有效期。
2023-07-06 19:52:42
103
1
原创 Visual Studio 2022基础使用操作总结
1.创建项目 2.认识视图窗口 3.运行程序 4.界面设置 5.编写多个项目 6.编写多个源文件 7.打开前项目
2023-05-08 20:44:54
17737
7
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人