leetcode_206. 反转链表

举报
悲恋花丶无心之人 发表于 2021/02/03 00:17:35 2021/02/03
【摘要】 目录 一、题目内容 二、解题思路 三、代码 一、题目内容 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题? 二、解题思路 每次记录原始节点...

目录

一、题目内容

二、解题思路

三、代码


一、题目内容

反转一个单链表。

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?

二、解题思路

每次记录原始节点的next节点,然后将原始节点新的下一个节点(一开始为Null)进行连接,之后新的下一个节点变为原始节点原始节点变为原始节点的next的节点,再重复这样的操作,直到原始节点为Null停止循环

三、代码


  
  1. # Definition for singly-linked list.
  2. class ListNode:
  3. def __init__(self, x):
  4. self.val = x
  5. self.next = None
  6. def __repr__(self):
  7. return str(self.val)
  8. class Solution:
  9. def reverseList(self, head: ListNode):
  10. # null 1 --> 2 --> 3 --> 4 --> null
  11. # null <-- 1 <-- 2 <-- 3 <-- 4 null
  12. if not head:
  13. return None
  14. cur, cur_new_next = head, None
  15. while cur:
  16. # save original next node
  17. origin_next = cur.next
  18. # link new next node
  19. cur.next = cur_new_next
  20. # current node turns to new next node
  21. cur_new_next = cur
  22. # original next node turns to current node
  23. cur = origin_next
  24. return cur_new_next
  25. if __name__ == '__main__':
  26. head = ListNode(1)
  27. head.next = ListNode(2)
  28. head.next.next = ListNode(3)
  29. head.next.next.next = ListNode(4)
  30. s = Solution()
  31. ans = s.reverseList(head)
  32. print(ans)

文章来源: nickhuang1996.blog.csdn.net,作者:悲恋花丶无心之人,版权归原作者所有,如需转载,请联系作者。

原文链接:nickhuang1996.blog.csdn.net/article/details/110226074

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。