反转链表(两种Python解法)

Posted 孔子?孟子?小柱子!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反转链表(两种Python解法)相关的知识,希望对你有一定的参考价值。

题目:

反转一个单链表。

示例:

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-linked-list

思路:

  主要需要注意反转过程中不要丢了节点。可以使用两个指针,也可以使用三个指针。

Python解法一:

1 class Solution:
2     def reverseList(self, head):
3         cur, prev = head, None 
4         while cur:
5             temp = cur.next
6             cur.next = prev
7             prev = cur
8             cur = temp
9         return prev

Python解法二:

 1 class Solution:
 2     def reverseList(self, head):
 3         if head == None or head.next == None:
 4             return head
 5         prev = None
 6         cur = head
 7         post = head.next
 8         
 9         while post:
10             cur.next = prev
11             prev = cur
12             cur = post
13             post = post.next
14         cur.next = prev
15         return cur

以上是关于反转链表(两种Python解法)的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode - 92 - 反转链表|| - java - 两种解法 - 细喔~

反转链表递归迭代

反转链表递归迭代

反转链表递归迭代

反转链表递归迭代

双100%解法剑指 Offer 24. 反转链表