反转链表,python实现
题目:输入一个链表,反转链表并输出反转后链表的头结点
- 思路:
- 代码只是为了便于理解写的,并不是真正的实现代码:实现过程如下
coding
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def ReverseList(self, pHead):
if not pHead or not pHead.next: #如果输入是空的,or只有一个节点的情况就返回头结点
return pHead
pre = pHead #1 ,下一个pre就是2
cur = pHead.next #2 第一个反转的值是2,下一个cur就是3
pHead.next = None #节点1指向none,因为反转之后第一个节点就是最后一个节点
while cur is not None:
nex = cur.next #3,反转之前记录3的位置
cur.next = pre #2-1反转
pre = cur #更新pre值为2
cur = nex #更新cur为3,第二个反转的值是3
return pre
method2(简洁版本)
# -*- 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 not pHead or not pHead.next:
return pHead
pre = None
while pHead:
nex = pHead.next #记录2的地址,为第二次更新做准备
pHead.next = pre #1指向pre
pre = pHead #把1赋值给pre
pHead = nex #更新pHead的值从1更新到2
return pre