反转链表(两种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
posted @ 2020-07-03 19:49  孔子?孟子?小柱子!  阅读(477)  评论(0编辑  收藏  举报