剑指offer面试题NO.6从尾到头打印链表
从尾到头打印链表
http://www.nowcoder.com/questionTerminal/d0267f7f55b3412ba93bd35cfa8e8035
两种实现方法,栈or递归
# 从尾到头打印链表
class ListNode:
def __init__(self, v):
self.val = v
self.next = None
def create(self, p, v):
while p.next != None:
p = p.next
p.next = ListNode(v)
# 递归实现
class recurSolution:
def printListFromTailToHead(self, listNode):
res = []
def printListnode(listNode):
if listNode:
printListnode(listNode.next) # 先递归到最后一层
res.append(listNode.val) # 添加值,退出函数,返回到上一层函数中的这行,继续添加值
printListnode(listNode)
return res
# 栈实现
class stackSolution:
def printListFromTailToHead(self, listNode):
chain = []
res = []
p = listNode
while p != None:
chain.append(p.val)
p = p.next
while len(chain) != 0:
res.append(chain.pop())
return res
if __name__ == '__main__':
recur_s = recurSolution()
stack_s = stackSolution()
head = ListNode(1)
head.create(head, 2)
head.create(head, 3)
print(recur_s.printListFromTailToHead(head))
print(stack_s.printListFromTailToHead(head))
查看22道真题和解析