题目描述
输入一个链表,从尾到头打印链表每个节点的值。
思路:写实现函数比较简单,主要是利用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()