点击上方“Jerry的算法和NLP”,选择“星标”公众号
重磅干货,第一时间送达
题目
从尾到头打印链表题目要求
输入一个链表的头结点,从尾到头反过来打印出每个结点的值
解题思路
要想从尾到头遍历链表,首先需要做的是倒转链表,再进行遍历。
该题思路:创建一个空列表,用来存储链表中的值,最后将列表逆序输出
下面我们来举个例子:
使用栈的情况:
题目要求,从尾到头遍历单链表。也就是第一个遍历到的节点要最后一个输出,最后一个遍历到的节点第一个输出。这就是典型的“后进先出”,由此可借助栈实现这种顺序。
每经过一个结点的时候,把该结点放到一个栈中。
当遍历完整个链表后,再从栈顶开始逐个输出结点的值,此时输出的结点的顺序已经反转过来了。
使用递归:
递归在本质上就是一个栈结构。
要实现反过来输出链表,我们每访问到一个结点的时候,先递归输出它后面的结点,再输出该结点自身,这样链表的输出结果就反过来了。
但有个问题:
当链表非常长的时候,就会导致函数调用的层级很深,从而有可能导致函数调用栈溢出。
代码实现
Python :