输入一个链表,反转链表后,输出新链表的表头。
反转链表是面试的基础题,掌握是很有必要的。
我们采用迭代思想进行链表反转
首先我们定义三个指针,分别表示前一个节点pre,当前节点cur,中间节点temp
每次循环时使得当前节点指向前一节点,然后节点后移进行下一反转。
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
# 返回ListNode
def ReverseList(self, pHead):
if not pHead:return None
pre = pHead
cur = pHead.next
temp = None
while cur:
temp = cur.next # temp记录下一节点位置
cur.next = pre #当前节点指向前一节点
pre = cur #指针后移
cur = temp #指针后移
pHead.next = None #原头结点指向None
return pre