剑指offer面试题05----从头到尾打印链表

本文介绍了一种使用Python实现的逆序打印链表的方法。通过将链表元素依次保存到列表中,最后反向输出列表元素,实现了从尾到头打印链表节点的值。文章详细解释了代码实现过程,并提供了完整的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述:

  输入一个链表, 从尾到头 打印链表每个节点的值。若列表为空,输出 [ ]


思考:

  首先需要定义一下链表节点的类,然后来构建链表。我们知道从头到尾打印链表的值是很简单的,直接按照顺序打印就可以了。但是对于单向链表,如果想要反向打印的话也不能把指针往回走,所以就按顺序把链表的元素依次保存到一个列表中,在最后反向输出列表的元素就可以了。


代码:

class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None

class Solution:
    def printListFromTailToHead(self, listNode):

        s1 = []
        if listNode is None:
            return s1

        while listNode.next:
            s1.append(listNode.val)
            listNode = listNode.next

        s1.append(listNode.val)

        return s1[::-1]

if __name__ == "__main__":

    s = Solution()
    l1 = ListNode('a')
    l2 = ListNode('b')
    l3 = ListNode('c')

    l1.next = l2
    l2.next = l3

    print(s.printListFromTailToHead(l1))

注意:

PS1 : 需要注意的是,在对列表进行遍历时要避免出现越界的情况,所以可以通过判断listNode.next是否存在来作为终止条件
PS2 : ls[::-1]可以实现列表反转

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值