题目:
输入一个链表,反转链表后,输出新链表的表头。
示例:
输入:{1,2,3}
输出:{3,2,1}
思路:
初始化:3个指针
1)pre指针指向已经反转好的链表的最后一个节点
2)pHead指针指向待反转链表的第一个节点,最开始第一个节点待反转,所以指向head
3)nex指针指向待反转链表的第二个节点,目的是保存链表,因为cur改变指向后,后面的链表则失效了,所以需要保存
接下来,循环执行以下三个操作
1)nex = pHead.next, 保存作用
2)pHead.next = pre 未反转链表的第一个节点的下个指针指向已反转链表的最后一个节点
3)pre = pHead, pHead= nex; 指针后移,操作下一个未反转链表的第一个节点
循环条件,当然是pHead != nullptr
代码:
class Solution:
# 返回ListNode
def ReverseList(self, pHead):
# write code here
if pHead is None:
return pHead
pre=None
while pHead:
nex=pHead.next
pHead.next=pre
pre=pHead
pHead=nex
return pre