剑指offer之从尾到头打印链表(Python)

本文介绍了一种使用Python实现从尾到头打印链表的方法。通过遍历链表并将节点值存储到列表中,最后反转列表来达到逆序打印的目的。文章提供了两种不同的列表反转方法。

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

题目描述

输入一个链表,从尾到头打印链表每个节点的值。

思路:写实现函数比较简单,主要是利用python的列表实现。初始化列表lists之后,我们让listNode从头开始走,每走一步就用append将列表的值添加进列表lists中,直至链表的指针指向NULL。当然,注意特别情况,就是链表为空。下面代码中的两种方法其实只不过是在列表输出时做的一点小小的变动。

如果希望本地编译器测试,我们先要对链表“赋初值”,这个挺麻烦的,需要定义CreateList函数进行列表的创建(赋值)。关于Python下链表的操作这里可以参考这篇博客,总结的挺全面的。


附上代码:

# -*- coding: utf-8 -*-
"""
Created on Sat Oct 14 18:57:34 2017
@author: gb_xiao
Mail: mingliumengshao@163.com

"""

"""
题目描述:
输入一个链表,从尾到头打印链表每个节点的值。
"""

class ListNode():
#链表的构造 初始化
    def __init__(self, x):
        self.val = x
        self.next = None

def CreateList(n):
#链表的创建
    if n <= 0:
        return False
    if n == 1:
        return ListNode(1)
    else:
        listNode = ListNode(1)
        tmp = listNode
        for i in range(2,n+1):
            tmp.next = ListNode(i)
            tmp  = tmp.next
    return listNode

def PrintList(listNode):
#用以打印链表结点
    tmp = listNode
#不要改变原来的链表
    while tmp:
        print tmp.val
        tmp = tmp.next
        
def function1(listNode):
    lists = []
    while listNode:
        lists.append(listNode.val)
        listNode = listNode.next
    return lists[::-1]        

def function2(listNode):
    lists = []
    while listNode:
        lists.append(listNode.val)
        listNode = listNode.next
    lists.reverse()
    return lists 
def main():
    listNode = CreateList(11)
    #打印链表进行测试
#    PrintList(listNode)
    print function1(listNode)
    

if __name__ == "__main__":
    main()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值