剑指offer面试题6:从尾到头打印链表(Java实现)
2019-01-04 11:37
603 查看
题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。
思路:因为要实现从头到尾遍历,然后从尾到头打印,也就是说第一个遍历到的最后一个打印,最后遍历到的第一个打印,这很明显符合栈 “先进后出” 的特点,所以我们可以利用栈来实现这种顺序。
测试用例:
- 功能测试:输入的链表有多个节点或只有一个节点。
- 负面测试:输入的链表头结点指针为空。
代码实现有两种方式:借助栈实现,或使用递归的方法。
public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } public class test_six { //用栈基于循环实现 public ArrayList<Integer> printListFormTailToHead(ListNode listNode){ ArrayList<Integer> list = new ArrayList<>(); if(listNode == null)return list; //这里要注意不是返回null Stack<ListNode> stack = new Stack<>(); while(listNode != null){ stack.push(listNode); listNode = listNode.next; } while(!stack.isEmpty()){ list.add(stack.pop().val); } return list; } }
//递归方法实现,本质也是一个栈结构 public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ArrayList<Integer> arrayList=new ArrayList<Integer>(); if(listNode!=null){ printListFromTailToHead(listNode.next); arrayList.add(listNode.val); } return arrayList; }
相关文章推荐
- 剑指offer--面试题5:从尾到头打印链表--Java实现
- 剑指offer面试题6-从尾到头打印链表-java
- 《剑指offer》问题6 从尾到头打印链表 Java实现
- 剑指Offer:面试题5——从尾到头打印链表(java实现)
- 剑指offer|面试题5:从尾到头打印链表(Java实现)
- 剑指offer--从尾到头打印链表 java实现
- JAVA实现从尾到头打印链表(《剑指offer》)
- 剑指Offer面试题5(Java版):从尾到头打印链表
- 剑指offer编程题Java实现——面试题5从头到尾打印链表
- JAVA实现从尾到头打印链表(《剑指offer》)
- 剑指offer 面试题5 从尾到头打印链表(栈实现)
- 剑指offer面试题5 从尾到头打印链表(java实现)
- 《剑指offer》编程题java实现(三):从尾到头打印链表
- 剑指Offer面试题5(Java版):从尾到头打印链表
- 剑指offer 面试题23 从上往下打印二叉树 Java实现
- 剑指offer面试题5:从尾到头打印链表
- 《剑指offer》面试题5—从尾到头打印链表
- 从尾到头打印链表java实现
- 剑指offer:从尾到头打印链表(java)
- 【剑指offer】面试题5:从尾到头打印链表 java