编程题 链表 java

xiaoxiao2021-02-28  95

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

/** * public class ListNode { * int val; * ListNode next = null; * * ListNode(int val) { * this.val = val; * } * } * */ import java.util.ArrayList; public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ArrayList tmpList=new ArrayList(); ArrayList resultList=new ArrayList(); if(listNode!=null){ while(listNode.next!=null){ tmpList.add(listNode.val); listNode=listNode.next; } //将链表尾部也加入到ArrayList中 if(listNode!=null){ tmpList.add(listNode.val); } if(tmpList.size()>1){ for(int i=0;i<tmpList.size();i++){ resultList.add(tmpList.get(tmpList.size()-i-1)); } } return resultList; }else{ return resultList; } } }

以上是一种自己写的笨方法,也可以使用以下思路:

方法一:借助堆栈的“后进先出”实现

方法二:借助递归实现(递归的本质还是使用了堆栈结构)

方法三: 用反向迭代器

转载请注明原文地址: https://www.6miu.com/read-36560.html

最新回复(0)