题解 | 反转链表

from operator import ne
# class ListNode:

#     def __init__(self, x):
#         self.val = x
#         self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param head ListNode类 
# @return ListNode类
#
class Solution:
    def ReverseList(self , head: ListNode) -> ListNode:
        pre = None
        crt = head
        while crt:
            nxt = crt.next
            crt.next = pre
            pre = crt
            crt = nxt
        return pre
        # write code here

下面这位解说的好

class Solution: def ReverseList(self , head: ListNode) -> ListNode: # write code here #1空链表不需要翻转 #2.链表的表头是head,链表的尾部是null 1--2--3--null,反转后 null--1--2--3 #3链表反转,将每个指针从后变成前,遍历整个链表,将遇到的节点----指针逆向即可。即:断掉当前节点向后的指针,改为前向 cur.next=pre;先记录当前链表的下一个节点,作为下一次循环的翻转节点。由于翻转节点要指向前节点,前节点为本次翻转的节点。 #遍历整个链表,

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

#空链表不需要反转

ifnot head:

returnNone

#链表 (2--》1--》3--》4--》null),cur也是当前节点

cur = head

#空指针,定义一个上一个节点的指针

pre = None

whilecur:

#先记录当前链表的下一个节点1#记录1的下一个节点3

temp = cur.next

#当前链表反转,将现在节点要翻转的节点的后续指向前一个节点 null《--21--》3--》4--》  ,同时断开链表                     #翻转节点指向后前继节点cur.next=pre  null<--2<--13-->4

cur.next= pre 

#现在的节点成为下一个前继节点2#现在的节点成为下一个节点的前继节点1

pre = cur

#链表下一个节点翻转,重新进入循环,链表值为本次循环记录的下一个节点1#现链表下一个节点翻转,重新进入循环,链表值为本次循环记录的下一个节点1

cur = temp

returnpre

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务