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

python本地测试链表的中间节点,第1张

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)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/758859.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-01
下一篇 2022-05-01

发表评论

登录后才能评论

评论列表(0条)

保存