python本地测试链表的中间节点

本文介绍了如何使用Python定义链表结构,并通过创建`ListNode`类实现链表操作。重点讲解了如何使用快慢指针的方法找到链表的中间节点。通过实例演示,展示了如何调用`middleNode`函数并将其结果转换为列表输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python本地测试链表的中间节点

#定义一个单向链表
class ListNode:
    #使用__init__方法绑定属性,__init__方法第一参数永远是self,表示创建的类实例本身,
    #若有__init__方法,创建实例时,需要传入相应的参数,但是self不需要传,python解释器会自己把实例变量传进去。self指的是类本身
    def __init__(self, val=0,next=None):
        self.val = val      
        self.next = next

def createLinkList(arr):   # 把list转换为Linklist
    head = ListNode(arr[0])       #链表是不连续的内存地址
    cur = head                    #cur和head 指向同一地址
    for i in range(1, len(arr)): 
        cur.next = ListNode(arr[i])  #将arr[i]的值存入self.val中,self.next=None赋值给cur.next.next为None,此时val的地址赋值给cur.next,
        cur = cur.next              #cur的地址为赋值之前cur.next子节点的地址,赋值之后cur.next为空
    return head         

def print_linked_list(head):      #把linklist打印为list
    cur = head
    res = []
    while cur:
        res.append(cur.val)
        cur = cur.next
    return res

class Solution(object):
    def middleNode(self, head):  # 快慢指针(一个指针快,一个指针慢)
        p, q = head, head
        while q and q.next:   # 注意 循环条件,q and q.next
            p = p.next
            q = q.next.next
        return p


head = createLinkList([1,3,2,0,-4])
# print(head.val)
# lst = print_linked_list(head)
# print(lst)
s = Solution()                #创建实例
a = s.middleNode(head)        #方法调用
res = print_linked_list(a)    #把linkList 转化为list
print(res)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值