给你单链表的头节点 head
,请你反转链表,并返回反转后的链表。
示例 1:
输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1]
示例 2:
输入:head = [1,2] 输出:[2,1]
示例 3:
输入:head = [] 输出:[]
提示:
1、做链表题的时候,其实可以将链表结构在纸上面画出来,印象更深刻,理解更方便。
2、在做链表题的时候,一定要确定好循环的边界。
解题思路:
就是将链表两个元素之间的指向改变,然后循环遍历整个链表执行这个操作
完整代码:
# 迭代法
# 定义链表
class ListNode:
def __init__(self,val = 0,next = None):
self.val = val
self.next = next
class Solution:
def reverseList(self,head):
# 双指针法,定义两个指针
# 定义一个prev prev.val = None
prev = None
cur = head
# 遍历链表,反转链表
while cur != None:
# temp 保存 下一个位置的 cur
temp = cur.next
cur.next = prev
# 这里的cur是一个头节点,所以就不用写成 prev.next = cur,而是直接用赋值语句(自己强行理解的,应该不对)
prev = cur
cur = temp
return prev