从尾到头打印链表
【题目】:
输入一个链表的头节点,从尾到头打印每个节点的值。
示例 1:
输入:head = [1,3,2] 输出:[2,3,1]
【解题思路】:
- 栈: 每读出一个结点的值,压入栈中,最后出栈得到结果;
- 递归: 每次先答应下一个节点的值再打印自身节点。
# data structure
class LinkNode(object):def __init__(self, val):self.val = valself.next = None# Create the Linklist
def create_link(link):if not link:returnp = head = LinkNode(link[0])for i in link[1:]:p.next = LinkNode(i)p = p.nextreturn head# print link
def print_link(head):while head:print(head.val, end=" ")head = head.nextprint()def reverse_print_link_by_stack(head):if not head:returnstack = []while head:stack.append(head.val)head = head.nextfor i in stack[::-1]:print(i, end=" ")print()def reverse_print_pink_by_recursive(head):if head:if head.next:reverse_print_pink_by_recursive(head.next)print(head.val, end=" ")a = [1, 2, 3, 4, 5]
obj = create_link(a)
print_link(obj)
reverse_print_link_by_stack(obj)
reverse_print_pink_by_recursive(obj)
运行结果:
示例代码2:
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = Noneclass Solution(object):def reversePrint(self, head):""":type head: ListNode:rtype: List[int]"""stock = []while head:stock.append(head.val)head = head.nextreturn stock[::-1]