剑指offer JZ6 从尾到头打印链表
1. 题目描述
2. 思路分析:
一个简单的算法题,考察链表的基本使用。函数printListFromTailToHead返回的是一个ArrayList类型,那我就先new一个ArrayList类型的对象作为返回值。单向链表只能从头到尾访问,而要求从尾到头输出。逆序输出,第一个考虑到利用栈。马上想到struct stackNode…喂,我们在用Java呢! Java里的java.util.*里面自带Stack,所以很自然,我们先顺序把每个结点的值依次push到Stack里,然后再pop进待返回的ArrayList对象中。
代码1:利用Stack实现逆序输出
/**
* public class ListNode {
* int val;
* ListNode next = null;
*
* ListNode(int val) {
* this.val = val;
* }
* }
*
*/
import java.util.ArrayList;
import java.util.Stack;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
/*创建储存反转结果的ArrayList Obj*/
ArrayList<Integer> list = new ArrayList<>();
/*实现反转操作的Stack*/
Stack<Integer> stack = new Stack<>();
/*建立一个临时的引用*/
ListNode p = listNode;
/*遍历链表,元素入栈*/
while(p!=null