天天看点

高频面试题: 单链表的反转

高频面试题: 单链表的反转(个人笔记)

  • 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  # 返回逆序列表的首部指针
           

大概如下图示

高频面试题: 单链表的反转