剑指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]可以实现列表反转
推荐阅读
- Android手机上Webview页面以及微信/QQ浏览器真机调试
- Spring|面试问题(Spring中Bean 的生命周期)
- 计算机组成|你了解CPU吗((三))
- 计算机操作系统|程序放在哪儿()
- ARKit-带你走进全新的世界(四:平面检测)
- 前端面试编程题02——execTime()函数变形
- 嘘,别叫醒我
- 聚合网盘程序Alist宝塔面板安装部署教程(网盘挂载程序)
- 文章管理
- 秋招打怪升级之路(十面阿里,终获offer!)