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

【剑指offer面试题05----从头到尾打印链表】题目:输入一个链表,从尾到头打印链表每个节点的值。若列表为空,输出[ ]。
思考:面试中链表相关的题目有很多,这个属于相对简单一点的,首先需要定义一下链表节点的类,然后来构建链表。我们知道从头到尾打印链表的值是很简单的,直接按照顺序打印就可以了。但是对于单向链表,如果想要反向打印的话也不能把指针往回走,所以就按顺序把链表的元素依次保存到一个列表中,在最后反向输出列表的元素就可以了。
Python代码如下

class ListNode: def __init__(self, x): self.val = x self.next = Noneclass Solution: # 返回从尾部到头部的列表值序列,例如[1,2,3] def printListFromTailToHead(self, listNode): # write code here ls = []if listNode is None: return lswhile listNode.next: ls.append(listNode.val) listNode = listNode.nextls.append(listNode.val)return ls[::-1]s = Solution() l1 = ListNode('a') l2 = ListNode('b') l3 = ListNode('c') l1.next = l2 l2.next = l3 print s.printListFromTailToHead(l1) # ['c', 'b', 'a']

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

    推荐阅读