首页 > 代码库 > 5、从尾部打印链表
5、从尾部打印链表
思路1:用额外存储元素,然后遍历输出。如栈或arrayList,前插入,没错都插入到最前面的节点。
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
if(listNode == null){
return new ArrayList<>();
}
int num = 0;
ListNode head = listNode;
//计算链表长度
while(listNode != null) {
num++;
listNode = listNode.next;
}
ArrayList<Integer> lists = new ArrayList<>();
//倒序插入
while(head != null) {
lists.add(0, head.val);
head = head.next;
}
return lists;
}
}
思路2:递归实现。每当访问一个节点,就递归输出后面的节点,然后输出自己。缺点:当链表长的时候,递归深度太深,会调用栈溢出。
测试:
只有一个节点,有多个节点。
空指针。
5、从尾部打印链表