题目描述
输入一个链表,反转链表后,输出新链表的表头。
思路:
首先需要判断是否有特殊情况,这里是链表为空的情况,如果链表为空,直接返回None;之后可以采用三个指针对链表进行反转,其思路就是从头结点开始,依次断开链表节点,将节点的指针方向反转。相当于将链表一分为二,第一部分存放着当前的反转链表,另外一部分存放着未反转的链表,依次将未反转链表的头结点断开,然后将断开的头结点指向已经反转的链表的头结点,这样反转链表长度增加一,未反转链表长度减一,直至未反转链表为空,则链表完全反转,返回反转链表头结点即可
Solution:
Python
# -*- 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 pHead is None:
return None
cur = pHead.next #未反转链表的头结点
pHead.next = None #断开头结点
while cur: #未反转链表不为空
tmp = cur.next #存储未反转链表的头结点之后的链表
cur.next = pHead #将未反转链表头结点断开,指向已反转链表头结点
pHead = cur #更新已反转链表头结点
cur = tmp #更新未反转链表头结点
return pHead