当前位置:   article > 正文

LeetCode算法笔记-Python(PyCharm)-206.反转链表_leetcode 206反转链表 python

leetcode 206反转链表 python

一开始直接在力扣上过的,没啥问题

  1. #双指针
  2. # Definition for singly-linked list.
  3. class ListNode:
  4. def __init__(self, val=0, next=None):
  5. self.val = val
  6. self.next = next
  7. class Solution:
  8. def reverseList(self, head: ListNode) -> ListNode:
  9. cur = head
  10. pre = None
  11. while(cur!=None):
  12. temp = cur.next # 保存一下 cur的下一个节点,因为接下来要改变cur->next
  13. cur.next = pre #反转
  14. #更新pre、cur指针
  15. pre = cur
  16. cur = temp
  17. return pre

但是在pycharm上报错 'list' object has no attribute 'next'

这是因为在IDE上传参的形式还是 list,力扣是通过接口将我们传入的list转化成了 ListNode 了。

我们应该重写ListNode这个类

  1. class ListNode:
  2. def __init__(self,val,next=None):
  3. if isinstance(val,int):# 判断val的类型是否为整数
  4. self.val = val
  5. self.next = None
  6. elif isinstance(val,list):# 判断val的类型是否为列表
  7. self.val = val[0]#先把第0个值赋给第0个节点
  8. self.next = None
  9. head = self# 将self传给head,即头指针,现在头指针已经是指向第0个节点
  10. for i in range(1,len(val)):# 便利列表
  11. node = ListNode(val[i])# 将ListNode实例化,并存储列表的第i个值,作为节点node
  12. head.next = node# 临时头指针的next指向第i个节点
  13. head = head.next# 相当于临时头指针指向第i个节点
  14. #下一个循环中就可以继续连接下一个列表元素,并再次更新头指针
  15. class Solution:
  16. def reverseList(self, head: ListNode) -> ListNode:
  17. #用来记录上一个节点,最开始指向None
  18. prev = None
  19. #保存当前的链表,最开始指向的是头节点
  20. curr = head
  21. while curr != None:# 当curr指向空时,结束循环,curr最开始是指向头指针的
  22. #保存后一个节点,
  23. temp = curr.next
  24. #改变节点的指向,反转链表
  25. curr.next = prev
  26. prev = curr
  27. #继续处理后面的链表
  28. curr = temp
  29. return prev
  30. l = [1,2,3,4,5]
  31. list_node = ListNode(l)
  32. obj = Solution()
  33. reve_list_node = obj.reverseList(list_node)
  34. while reve_list_node:
  35. print(reve_list_node.val)
  36. reve_list_node = reve_list_node.next

输出的结果:

  1. D:\Anaconda3\python.exe C:/Users/12549/Desktop/likou/206.py
  2. 5
  3. 4
  4. 3
  5. 2
  6. 1
  7. Process finished with exit code 0
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/209805
推荐阅读
相关标签
  

闽ICP备14008679号