cs61a-36链表的练习

在练习之前先创建链表类

13CD6AC9-EC0C-4894-B0B8-527C63A54944

A48E05FD-07B6-4c94-9428-4BA813730D43
如图所示
这个tolinked 函数的作用是把python中的可迭代对象转化为链表
练习1:def split(L)
‘’‘返回(mid,last,length)
测试实例如下

split(tolinked([1,2,3,4,5]))
(Link(3,Link(4,Link(5))),Link(5),5)
split(tolinked([1,2,3,4]))
(Link(2,Link(3,Link(4))),Link(4),4)
在这里采用双指针方法及即快慢指针法
思路图如下

微信图片_20251208191447_31_64
代码如下

A48E05FD-07B6-4c94-9428-4BA813730D43
解释一下我在学习的过程中的困惑点
首先我们要达到mid移动一步,last移动两步的效果,那么可以想到用if判断偶数移动
顺着这个思路修改一下就可以了
练习2:链表的结点的插入
def interperse(list,pred,insert)
题意:如果list中的元素满足PRED,在这个元素后插入inset的一个元素
代码如下:

8C0DAB1F-69B0-4e83-84B9-1590858C738D
运行的效果如下:

937DE237-6571-4068-8846-8E057A007433

posted @ 2025-12-08 19:28  cola_my_love  阅读(0)  评论(0)    收藏  举报