问题描述:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
- 解决方法:双指针
- 第一步设置虚拟头节点,防止头节点丢失
- 设置一个pre和temp指针
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
##类似一个滑动窗口 cur指向head pre为none,第二次的时候pre成为头,cur则是第二个节点
## 采用temp当作临时空间 防止 cur指向的节点丢失
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
cur = head
pre = None
while(cur != None):
temp = cur.next # temp 等于cur.next节点,因为cur要翻转之前它前面的节点,防止
#节点丢失 就让temp指向cur后面的节点
cur.next = pre#cur反转指向它前面的节点
#update pre cur
pre = cur #pre向后移位
cur = temp# temp指向赋给cur
return pre