1、问题
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
题目意思:
数组[1,2,3,4,5] ->[5,4,3,2,1]
如图
2、代码展示
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
preNode = None
currNode = head
while currNode:
nextNode = currNode.next
currNode.next = preNode
preNode = currNode
currNode = nextNode
return preNode
3、代码的图片理解
currNode = head #表示将头结点赋值为当前结点。
while循环里,第一步:nextNode = currNode.next
第二步:currNode.next = preNode
第三步: preNode = currNode
currNode = nextNode
然后第一步的NextNode变成currNode。
之后进行循环操作,最重要的一步是第二步,当前结点currNode指向前结点preNode。
注:最重要的一点是python的链表不像C++一样有头指针。这可真不好理解。