从尾到头打印链表

来源:互联网 发布:陈奕迅失忆蝴蝶知乎 编辑:程序博客网 时间:2024/06/06 07:50

输入一个链表,从尾到头打印链表每个节点的值。

#利用list的reverse(),也可以用切片[::-1]# class ListNode:#     def __init__(self, x):#         self.val = x#         self.next = Noneclass Solution:    # 返回从尾部到头部的列表值序列,例如[1,2,3]    def printListFromTailToHead(self, listNode):        # write code here        if listNode is None:            return []        result = []        while listNode:            result.append(listNode.val)            listNode = listNode.next        result.reverse()        return result

解法二:

#利用栈# class ListNode:#     def __init__(self, x):#         self.val = x#         self.next = Noneclass Node():    def __init__(self,value=None,next=None):        self.next = next        self.value = valueclass stack():    def __init__(self):        self.top = None    def push(self,value):        if self.top is None:            self.top = Node(value)        else:            self.top = Node(value,self.top)    def pop(self):        if self.top:            value = self.top.value            self.top = self.top.next            return value    def peek(self):        if self.top:            return self.top.valueclass Solution:    # 返回从尾部到头部的列表值序列,例如[1,2,3]    def printListFromTailToHead(self, listNode):        # write code here        if listNode is None:            return []        s = stack()        while listNode:            s.push(listNode.val)            listNode = listNode.next        result = []        while s.peek() != None:            result.append(s.pop())        return result