劍指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