LINTCODE:206 反转链表(Python语言实现)

本文深入探讨了单链表的反转算法,提供了两种方法:一种是利用队列实现的迭代反转,另一种是直接法,通过调整指针来完成反转。详细解释了每种方法的实现过程和代码示例。

题目描述

反转一个单链表

  • 示例
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
  • 进阶

你可以迭代或递归地反转链表。

用队列实现赋值

反转,即先进后出,使用队列依此取值赋值操作。

def reverseList(self, head):
    node_queue = []
    p = head
    while p:
        node_queue.append(p.val)
        p = p.next
    p = head
    while p:
        p.val = node_queue.pop(-1)
        p = p.next
    return head

直接法

维系一个结点p始终指向头结点,即第一个结点。

def reverseList(self, head):
    p, h = None, head
    while h:
        tmp = h.next
        h.next = p
        p = h
        h = tmp
    return p

(最近更新:2019年04月16日)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值