剑指offer18 — 反转链表
题目
输入一个链表,反转链表后,输出新链表的表头。
分析
- 将现有的头换成尾,尾部的next为空
- 从第二个node开始,循环将next指向前一个
- 需要有一个指针一直指向还没有反转的链表的头部
题目
# -*- 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 == None:
return None
if pHead.next == None:
return pHead
leftPointer=pHead
midPointer=pHead.next
rightPointer=midPointer.next
leftPointer.next=None
while rightPointer !=None:
midPointer.next=leftPointer
leftPointer=midPointer
midPointer=rightPointer
rightPointer=rightPointer.next
midPointer.next=leftPointer
return midPointer