题目描述:
输入一个链表, 从尾到头 打印链表每个节点的值。若列表为空,输出 [ ]
思考:
首先需要定义一下链表节点的类,然后来构建链表。我们知道从头到尾打印链表的值是很简单的,直接按照顺序打印就可以了。但是对于单向链表,如果想要反向打印的话也不能把指针往回走,所以就按顺序把链表的元素依次保存到一个列表中,在最后反向输出列表的元素就可以了。
代码:
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]可以实现列表反转