题目:输入一个链表,从尾到头打印链表每个节点的值。
输入描述:
输入为链表的表头
输出描述:
输出为需要打印的“新链表”的表头
该题的解题思路是递归或者是栈:
递归解法:栈的解法:public static void printListReverse1(ListNode headNode){ if (headNode != null){ if(headNode.next != null){ printListReverse1(headNode.next); } } System.out.println(headNode.val); }
还有这种递归方法挺难理解的,现在我还是不咋理解哈哈,debug一下看到了程序走的步骤,反正让我写我是写不出来,有兴趣的可以思考下:public static void printListReverse(ListNode headNode){ Stack<ListNode> stack = new Stack<ListNode>(); while (headNode != null){ stack.push(headNode); headNode = headNode.next; } while (!stack.empty()){ System.out.println(stack.pop().val); } }
public class Solution { ArrayList<Integer> arrayList=new ArrayList<Integer>(); public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { if(listNode!=null){ this.printListFromTailToHead(listNode.next); arrayList.add(listNode.val); } return arrayList; } }