美文网首页
5、从尾到头打印链表

5、从尾到头打印链表

作者: 小碧小琳 | 来源:发表于2018-10-02 10:35 被阅读0次

    题目描述:
    输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。

    题目解释:不同于LeetCode的206题,翻转链表(改变链表结构,需要用两个指针,previous与cur来交替替换指针指向)。这道题只要求输出链表的值,如果不要求改变链表的结构,那么就不能用翻转链表然后从头到尾打印值得思路。

    想到基于栈和循环的方式,来解决问题。(因为用到了栈,本质上也可以用递归,不过当链表比较长时,可能递归会比较深,因此用前面的思路比较好)。

    # -*- coding:utf-8 -*-
    # 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,每次的值append到res中
            # 用while保持循环,可以用cur来表示下一个节点,当cur不为空时,即可继续循环
            cur = listNode
            res = []
            while cur != None:
                res.append(cur.val)
                cur = cur.next
            #最终,再反转链表
            res.reverse()
            return res
    
    

    相关文章

      网友评论

          本文标题:5、从尾到头打印链表

          本文链接:https://www.haomeiwen.com/subject/feiooftx.html