高频面试题: 单链表的反转(个人笔记)
- input : 1 -> 2 -> 3 -> 4 -> 5 -> None
- output : 5 -> 4 -> 3 -> 2 -> 1 -> None
python代码思路:
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
# 返回ListNode
def ReverseList(self, pHead):
pre = None # 定义返回列表的头指针
cur = pHead # 当前操作链表的操作节点指针
while cur: # 当cur不为空
next = cur.next # 将当前操作节点放到逆序列表首部前先标记好后面节点位置
cur.next = pre # 移动当前节点到逆序节点首部
pre = cur # 将逆序链表中的首指针指向新的首部节点
cur = next # 返回cur指针到操作链表的首部
return pre # 返回逆序列表的首部指针
大概如下图示