反转链表
一、题目
输入一个链表,反转链表后,输出新链表的表头。
二、解析
定义三个结点left、mid、right,在最开始的时候让left.next指向None
然后开始正常的流程
- right的next指向left
- left 变为mid
- mid变为right
- right变为right.next
- 循环结束时间:right为None,此时mid为链表头部,把他打印出来吧,但是最后别忘了让mid指向left,因为right为None时你没有进入循环
# -*- 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
#需要有三个东西,leftPoint,midPoint,rightPoint
# 流程:将midPoint的next指向leftpoint后,令leftPoint=midPoint,midPoint=rightPOint
# rightPoint存在的意义是当你将left等于mid的时候,你的mid是不是也得换成mid本来的next了呢?
# 边界条件
if pHead == None:
return None
if pHead.next == None:
return pHead
# 正式开始:首先定义三个指针
leftPoint = pHead
midPoint = pHead.next
rightPoint = midPoint.next
# 现将leftPoint指向None
leftPoint.next = None
# 进入一个循环,直到rightpoint为None
while rightPoint != None:
midPoint.next = leftPoint # 这个是核心,一步一步的将next指向前一个
leftPoint = midPoint
midPoint = rightPoint
rightPoint = midPoint.next
midPoint.next = leftPoint
return midPoint