- 博客(21)
- 收藏
- 关注
原创 数组基础---Python
通常数组可以分为一维数组、二维数组和多维数组等,按照不同的程序设计语言还能分为以行为主和以列为主,其中,以行为主是一行一行按序存储,例如C/C++,Java,PASCAL等程序语言;若只有中括号,即没有指定常数值,则表示定义的是不定长度的列表。含有m*n个元素的二维数组,可以表示为A(1:m,1:n),m代表行数,n代表列数,其中,A(1:m,1:n)也可以简写为A(m,n)。实际的计算机内存中是无法以矩阵方式存储二维数组的,因此,仍然是以线性方式来存储二维数组,按照不同的程序语言分为以行为主和以列为主。
2025-11-20 11:42:05
949
原创 删除有序链表的重复元素--Python3
删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的。给出的链表为1→2→3→3→4→4→5, 返回1→2→5.给出的链表为1→1→2→3→3,返回1→2→3。给出的链表为1→1→1→2→3, 返回2→3.给出的链表为1→1→2,返回1→2.给出一个升序排序的链表,
2025-11-20 08:58:55
155
原创 判断一个链表是否为回文结构--Python3
step 2:使用下标访问,两个下标代表两个指针,两个指针分别从数组首尾开始遍历,左指针指向开头,从左到右,右指针指向数组末尾,从右到左,依次比较元素是否相同。否则遍历到两个指针相遇就好了,因为左指针到了右半部分都是右指针走过的路,比较的值也是与之前相同的。step 3:依次遍历原数组与反转后的数组,若是元素都相等则是回文结构,只要遇到一个不同的就不是回文结构。step 2:准备另一个辅助数组,录入第一个数组的全部元素,再将其反转。,记录链表元素的辅助数组,及记录反转后数组。,记录链表元素的辅助数组。
2025-11-19 10:49:38
287
原创 单链表的排序--Python3
单链表排序常见方法主要包括归并排序和转化为数组排序。方法一、归并排序知识点1:分治分治即“分而治之”,“分”指的是将一个大而复杂的问题划分成多个性质相同但是规模更小的子问题,子问题继续按照这样划分,直到问题可以被轻易解决;“治”指的是将子问题单独进行处理。经过分治后的子问题,需要将解进行合并才能得到原问题的解,因此整个分治过程经常用递归来实现。知识点2:双指针。
2025-11-18 20:43:35
434
原创 链表相加--Python3
例如:链表 1 为 9->3->7,链表 2 为 6->3,最后生成新的结果链表为 1->0->0->0。假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数。给定两个这种链表,请生成代表两个整数相加值的结果链表。
2025-11-18 20:25:02
193
原创 输出两个链表的第一个公共节点--Python3
让a和b一起遍历,当a先走完链表1的尽头(为None)的时候,则从链表2的头节点继续遍历,同样,如果b先走完了链表2的尽头,则从链表1的头节点继续遍历,也就是说,a和b都会遍历链表1和链表2。1.有公共节点的时候,N1和N2必会相遇,因为长度一样嘛,速度也一定,必会走到相同的地方的,所以当两者相等的时候,则会第一个公共的节点。使用两个指针a,b,一个从链表1的头节点开始遍历,我们记为a,一个从链表2的头节点开始遍历,我们记为b。(a最后肯定能到达链表2的终点,b肯定能到达链表1的终点)。
2025-11-12 15:21:33
187
原创 删除链表的倒数第n个节点--Python3
我们无法逆序遍历链表,就很难得到链表的倒数第n个元素,那我们可以试试反过来考虑,如果当前我们处于倒数第n的位置上,即距离链表尾的距离是n,那我们假设双指针指向这两个位置,二者同步向前移动,当前面个指针到了链表头的时候,两个指针之间的距离还是n。双指针指的是在遍历对象的过程中,使用两个指针(特殊情况甚至可以多个),两个指针同方向访问两个链表、或是同方向访问一个链表(快慢指针)、或是相反方向扫描(对撞指针),从而达到我们需要的目的。给出的链表为: 1→2→3→4→51→2→3→4→5, n=2n=2.
2025-11-12 14:56:02
265
原创 找出并输出链表中环形链表的头结点--Python3
环形链表的头结点是指链表中环的起始节点,例如,链表中,节点3是环形链表的头结点,因为它既是环的起点,也是链表的一部分。具体的实现方法(1)检测环形链表是否存在使用快慢指针可以检测链表是否有环。快指针每次移动两步,慢指针每次移动一步,如果快慢指针相遇,说明链表有环;否则无环。(2)找到环的起点当快慢指针完成第一次相遇后,将一个指针重置到链表头部,并使两个指针以相同速度移动,第二次相遇的点即为环的起点。理解逻辑如图所示代码实现运行结果。
2025-11-10 16:14:13
309
原创 链表中倒数最后k个结点--Python3
输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。(3)快慢指针同步移动,当快指针到达链表尾部的时候,慢指针正好到了倒数k个元素的位置。(2)准备慢指针指向原始链表头,代表当前元素,则慢指针与快指针之间的距离一直都是k。(3)如果链表足够长,则我们从头节点往后遍历n−k次即可找到所求。(2)然后比较链表长度是否比kk小,如果比k小返回一个空节点。(1)准备一个快指针,从链表头开始,在链表上先走k步。如果该链表长度小于k,请返回一个长度为 0 的链表。
2025-11-10 16:13:36
265
原创 判断链表内是否有环--Python3
链表中的环指的是链表的某个节点可以通过连续跟随next指针再次到达自身。若链表中存在环,则遍历链表时会进入无限循环;若无环,则会正常到达链表尾部(null。
2025-11-03 16:37:24
255
原创 合并k个已排序链表--Python3
合并k个已排序链表是指将k个已经按升序或降序排列的链表合并为一个新的有序链表。合并后的链表需要保持相同的排序规则(通常为升序),且新链表应包含所有输入链表的节点。方法:(1)逐一两两合并 (2)分治法逐一两两合并相较于分治法没那么高效,此处具体阐述分治法,分治法即将k个链表分成两部分,分别递归合并,最后合并两部分结果,这种方法显著提高了链表合并的效率。
2025-11-03 15:53:01
187
原创 单向链表的连接---Python3
单向链表的连接是指将两个或者两个以上独立的单向链表合并为一个链表(也称为级联)。通常是将第二个链表的头部连接到第一个链表的尾部,形成一个新的链表。代码实现仿真结果1.空链表处理:如果第一个链表为空(head1为NULL),直接将head1指向第二个链表的头节点即可。2.内存泄漏:连接操作后,第二个链表的头节点被并入第一个链表,但需确保第二个链表的头指针不再被单独使用,否则可能导致内存泄漏或重复释放。3.时间复杂度:连接操作的时间复杂度为O(n),其中n是第一个链表的长度。
2025-10-28 16:36:40
315
原创 单向链表的反转---Python3
单向链表反转是指将链表中节点的链接方向逆转,使得原本指向下一个节点的指针改为指向前一个节点。反转后,原链表的头节点变为尾节点,尾节点变为头节点。
2025-10-28 15:53:37
199
原创 单向链表中节点的删除---Python3
在单向链表中,节点的删除指的是从链表中移除一个特定的节点,并调整相邻节点的指针以维持链表的连续性。由于单向链表每个节点只包含指向下一个节点的指针(通常称为next指针),删除操作需要特别注意前驱节点的指针更新。单向链表中节点删除的类型(1)删除链表的第一个节点:只要把链表头指针指向第二个节点即可。(2)删除链表的最后一个节点:只要将指向链表倒数第二个节点ptr的指针指向None即可。(3)删除链表内的中间节点:将删除节点的前一个节点的指针指向将要被删除的节点的下一个节点即可。代码实现代码运行结果。
2025-10-22 22:01:22
294
原创 单向链表中节点的插入--Python3
第二次打印(最终输出结果)和第一次打印是两件完全不同的,第二次打印(最终输出结果)输出是遍历动态链表的结果,其格式是简单的垂直列表,目的是清晰展示链表的最终状态,三行四列是“数据预览视图”,而您看到的垂直列表是“链表最终报告视图”。主要针对上述insetnode()函数构建过程中的情况1,ptr为None,表示在链表头部插入新节点,那么该情况则需要更新链表的首节点,同理,由于情况2和情况3,变动的都是链表除首节点以外的节点,因此不存在首节点的更新一说。
2025-10-22 17:46:33
997
原创 单向链表的创建与遍历--Python3
如图,为链表头节点、链表节点以及ptr指针之间的关系,其中,链表头节点通常不发生位置的变化,也不包含具体的结构声明(学生的姓名、学号、数学成绩、英语成绩、指向下一个链表节点的指针字段等),但是ptr指针是会随着遍历过程发生变换的。最后一个节点的指针域为。(2)遍历单向链表:使用指针运算访问单向链表中的每个节点,使用结构指针ptr作为链表的读取游标,一开始指向单向链表的头部,每读完链表的一个节点,就将ptr往下一个节点移动,直到ptr指向None为止。
2025-10-14 16:31:56
198
原创 合并两个排序的链表--Python3
合并两个排序链表是指将两个已经按升序排列的链表合并为一个新的链表,新链表中的节点仍然保持升序排列。例如:链表1:1-->3-->5 链表2:2-->4-->6合并结果:1-->2-->3-->4-->5-->6。
2025-09-17 20:11:04
291
原创 链表中的节点每k个一组翻转---Python3
链表中的节点每k个一组翻转是指将一个链表按照给定的整数k分成若干组,每组包含k个连续的节点,对于每一组节点,需要将其内部的顺序进行翻转,如果最后一组的节点数量不足k个,则保持原有顺序不变。
2025-09-16 19:51:17
317
原创 链表在指定区间反转的实现--Python3
一、头插法(推荐思路)具体做法:https://uploadfiles.nowcoder.com/images/20211206/397721558_1638760529718/56E0F0741EC36DE1005A0BF1028ADBF3复杂度分析:二、递归法(扩展思路)具体做法:复杂度分析:
2025-09-05 15:48:10
453
原创 软件测试--反转链表--python3
迭代法是反转链表的直观方法,通过遍历链表并逐步修改节点指向来完成反转。递归法通过递归调用反转子链表,再将当前节点连接到反转后的子链表末尾。
2025-09-04 13:43:01
231
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅