【Python算法题】如何实现链表的逆序

目录

方法1:原地逆置

 

方法2:递归法 


方法1:原地逆置

class LNode:  # 在python中创建一个像C中的结构体
    def __init__(self):
        self.data = None
        self.next = None


def Reverse(head):
    if head == None or head.next == None:  # 当未传入参数和链表只有头结点的时候就直接跳出
        return

    # 新建3个变量,作用相当于c语言里面的指针 前驱 当前 后继 结点
    pre = None
    cur = None
    next = None

    # 把链表首结点变成尾结点
    cur = head.next
    next = cur.next
    cur.next = None  # 修改第一个结点的后继指空

    # 前驱后继结点继续向后推进
    pre = cur
    cur = next

    while cur.next != None:  # 若cur指针指向结点还有后继结点的时候,也就是一直循环到链表的倒数第二个结点
        next = cur.next  # 先保存后继
        cur.next = pre  # 再改尾指针
        # 前驱后继结点继续向后推进
        pre = cur
        cur = next

    # 对于最后一个结点的特殊处理
    cur.next = pre
    head.next = cur


if __name__ == 
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值