题目描述
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。题目要求python返回一个存储数据值的列表
解题思路
方法①:定义一个空列表res,从头到尾遍历链表,把每个元素添加到res中,最后返回res的倒序
class ListNode: def __init__(self, x): self.val = x self.next = None class Solution: # 返回从尾部到头部的列表值序列,例如[1,2,3] def printListFromTailToHead(self, listNode): # write code here res = [] temp = listNode while temp is not None: res.append(temp.val) temp = temp.next res.reverse() return res n1 = ListNode(1); n2 = ListNode(2); n3 = ListNode(3) n1.next = n2; n2.next = n3 S = Solution() print(S.printListFromTailToHead(n1))
方法②:将链表进行颠倒,再顺序输出
class ListNode: def __init__(self, x): self.val = x self.next = None class Solution: # 返回从尾部到头部的列表值序列,例如[1,2,3] def printListFromTailToHead(self, listNode): # write code here res = [] pre = None cur = listNode while cur is not None: temp = cur.next cur.next = pre pre = cur cur = temp while pre: res.append(pre.val) pre = pre.next return res def print_n(node): while node: print(node.val) node = node.next n1 = ListNode(1); n2 = ListNode(2); n3 = ListNode(3) n1.next = n2; n2.next = n3 S = Solution() print(S.printListFromTailToHead(n1))