1.题目
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
2.思路
修改指针指向。记忆:
每一次(对应while中四步):
(1)原链的头结点指向新结点的后置结点;
(2)头结点被新结点后置指针指向;
(3)新结点成为头结点;
(4)保持q指针在p指针的所指节点的下一个节点上
3.方法
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
# 返回ListNode
def ReverseList(self, pHead):
# write code here
if not pHead:
return None
p = pHead
q = pHead.next
while q:
pHead.next = q.next # 头指针指向下一个节点的后置节点
q.next = p # 让头节点的下一个节点反向指向头节点
p = q # p指针复位,p指向新的头节点(原头节点的下一个节点)
q = pHead.next # q指针复位(保持在p指针的后面),指向新的头节点的后一个节点
return p