python链表反转
Posted 21座的胖子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python链表反转相关的知识,希望对你有一定的参考价值。
题目
思路
题目的重点是:实现把一个结点直接插在头结点之前。直接去插入实现起来很复杂,而且删除结点也比较麻烦,于是先设定一个空指针rev = None,通过遍历链表一步步插入。
代码
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
rev = None
while head:
rev,rev.next,head = head,rev,head.next
return rev
#循环里的交换语句在交换时不影响其他交换的值,另一种写法如下
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
rev = None
while head:
new = rev
rev = head
head = head.next
rev.next = new
return rev
以上是关于python链表反转的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode练习(Python):链表类:第92题:反转链表 II:反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。