- 博客(11)
- 收藏
- 关注
原创 链表结尾:双向链表
文章摘要:本文介绍了链表的分类方式(单向/双向、带头/不带头、循环/非循环)及两种常见链表形式。重点分析了带头双向循环链表的结构特点与实现方案,详细展示了增删查改操作的C语言代码实现。同时比较了顺序表和链表的优缺点,指出顺序表存在空间浪费、增容效率问题,链表虽解决这些问题但存在访问方式受限等新问题。最后强调两者是互补的数据结构,应根据实际需求选择使用。
2025-11-06 16:08:46
367
原创 链表oj题(5)
链表操作的两个常见算法:插入排序和删除重复结点。插入排序通过断开原链表首节点作为新链表头,依次取出原链表节点与新链表比较后插入合适位置。删除重复结点则使用双指针遍历链表,当遇到重复值时跳过这些节点并调整指针,需要注意处理头尾特殊情况。两个算法都需要考虑边界条件和释放内存等细节。
2025-10-31 16:24:08
178
原创 链表oj题(4)
该文介绍了复制带有随机指针链表的解决方案。核心思路分三步:首先将每个复制节点插入原节点后面;然后通过原节点的随机指针定位复制节点的随机指针;最后拆分链表恢复原链表并提取复制链表。具体实现中,通过先连接后拆分的方式巧妙解决了复制节点地址不确定的问题,确保随机指针正确指向。文中还给出了C语言实现代码,展示了完整的操作流程。
2025-10-29 11:36:06
197
原创 链表oj题(3)
本文介绍了四种链表相关问题的解题思路与代码实现:1.判断回文链表:通过快慢指针找到中点,反转后半段后比较;2.找出两链表相交点:计算长度差后对齐比较;3.判断环形链表:使用快慢指针相遇原理;4.找出环形链表入口:通过数学分析确定相遇点与入口的关系。每种方法都配有详细解释和代码实现,重点运用了双指针技巧,包括快慢指针和同步指针。
2025-10-27 21:47:56
333
原创 链表oj题(2)
本文介绍了链表操作的五个经典算法:1)删除指定值的节点,通过遍历链表并释放匹配节点;2)快慢指针法找中间节点,快指针两倍速移动;3)快指针先走k步找倒数第k个节点;4)合并有序链表,通过比较节点值构建新链表;5)按基准值分割链表,创建大小两个子链表后合并。每个算法均配有详细思路分析和C语言实现代码,重点讲解了指针操作技巧和边界条件处理。
2025-10-23 19:35:07
499
原创 链表oj题(1)
我们从上面的图很容易看出我们只需要把2后面的地址赋值成1的地址,这样2和1就链接在一起了,但是我们再去寻找3的时候,我们就发现找不到3的地址了,所以我们要解决这个问题就必须定义三个指针。还有一种方法,就是利用链表头插的方法,我们创立一个新的链表,不断将老链表中的数以此头插进来,下面给出图示。给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。其实cur = next,就是把next储存的空间给到cur。我们将第二个链表倒置一下并且和第一个链表进行比对。思路:反转一个链表,即将下面的链表。
2025-10-22 21:05:39
308
原创 数组oj题(2)
分组:将3和5进行分离其实就是找3和5之间的不同,那么我们看到3和5在二进制上面的不同其实就是总存在一个位置上的数字存在不同,比如3和5二进制的差异就是在第二个位置上3是1,5是0,那么我们分离的思想很简单,将上面的数组分成两组,分组的依据是找出最终异或的两个数在二进制上在某一个位置上存在不同的数字,比如我们将例子给出的数组以第二个位置上是1还是0为依据进行分组。然后对每组分别进行异或,最终得到的两个数据就是需要找到的只存在一次的数如何找到分组的依据呢,及如何找到两个数在哪一个位置上数字不同呢?
2025-10-22 18:12:08
766
原创 数组的oj题(1)
思路:假设数组nums1[1 2 2 3 3 3 4 5 6],令val=3,删除数组中所有等于3的值,我们首先会想到在开辟一个数组nums2,将原数组所有不等于3的值传递给nums2,及设置一个指针i指向原数组,一个指针j指向新数组,i负责遍历原数组,j负责当原数组的第i个位置数不等于3的时候,将这个值传递给nums2[j],然后j指向数组中下一个数。具体操作如下图所示。(1)更改 nums 数组,使 nums 的前 k 个元素包含不等于 val的元素。nums 的其余元素和 nums 的大小并不重要。
2025-10-21 20:48:31
97
原创 数据结构顺序表和链表(2)
链表是一种、非顺序的存储结构,数据元素的是通过链表中的次序实现的。链表是针对顺序表的缺点来设计的,补足的是顺序表的缺点。链表只用一个头指针结构:从上面的结构可以看出,链式结构在逻辑上是连续的,但是在物理上并不是连续的,因为链表中的结点一般都是从堆(向上生长)上面申请的,从堆上面申请的空间是按照一定的策略来分配的,两次申请的空间可能是连续的也可能并不连续。
2025-10-21 19:54:32
512
原创 顺序表和链表(1)
线性表是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串等线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。
2025-10-14 11:15:38
316
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅