链表逆序打印
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
测试数据:
1、一个链表多个节点或者一个节点
2、链表为null
方法一:采用栈,先进后出的策略
/** * public class ListNode { * int val; * ListNode next = null; * * ListNode(int val) { * this.val = val; * } * } * */ import java.util.*; public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ArrayList<Integer> list=new ArrayList<Integer>(); Stack<Integer> stack=new Stack<Integer>(); while(listNode != null){ int temp=listNode.val; stack.push(temp); listNode=listNode.next; } while(!stack.isEmpty()){ Integer value=stack.pop(); list.add(value); } return list; } }
方法二:递归注意要将保存数据的ArrayList是成员变量
/** * public class ListNode { * int val; * ListNode next = null; * * ListNode(int val) { * this.val = val; * } * } * */ import java.util.*; public class Solution { ArrayList<Integer> list=new ArrayList<Integer>(); public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { if(listNode!=null){ printListFromTailToHead(listNode.next); list.add(listNode.val); } return list; } }
立志如山 静心求实
浙公网安备 33010602011771号