[剑指offer][Java]从尾到头打印链表

题目

输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。

程序核心思想

  • 从“从尾到头”就可以联想到栈,所以这个题目用java中自带的栈来解决“从尾到头”的要求。把所有的节点值入栈,然后节点值出栈进入ArrayList,最后返回ArrayList即可。
  • 剩下来就是链表遍历的问题了。可以new一个节点,指向链表头,然后依次指向后面的节点,进行遍历,直到链表结尾为止(new的节点指向的节点的next为null)。

Tips

  • 栈的使用
    创建:Stack<Integer> stack = new Stack<Integer>();
    入栈:stack.push(括号里填入栈的东西,类型为创建时泛型的类型)
    出栈:stack.pop();
    判断栈是否为空:stack.empty();
  • ArrayList的使用
    创建:ArrayList<Integer> array = new ArrayList<Integer>();
    添加元素:array.add(括号里填添加的东西,类型为创建时泛型的类型)

代码

/**
*    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) {
        Stack<Integer> stack = new Stack<Integer>();
        ArrayList<Integer> array = new ArrayList<Integer>();
        ListNode node = new ListNode(0);
        node.next = listNode;
        
        while(node.next != null){
            stack.push(node.next.val);
            node.next = node.next.next;
        }
        
        while(!stack.empty()){
            array.add(stack.pop());
        }

        return array;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 《剑指offer》面试题6:从尾到头打印链表 题目:输入一个链表的头节点,从尾到头反过来打印出每个节点的值。(链表...
    打工这件小事阅读 3,564评论 0 0
  • 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。链表节点定义: 链表访问是从头到尾访问的,而要从尾...
    lvlvforever阅读 1,580评论 0 0
  • 题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。 思路 思路一:利用栈的性质。 先进后出...
    Max_7阅读 1,567评论 0 0
  • 题目描述:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。 题目解释:不同于LeetCode的20...
    小碧小琳阅读 1,463评论 0 1
  • https://www.nowcoder.com/practice/d0267f7f55b3412ba93bd35...
    twilight_mao阅读 2,361评论 0 0

友情链接更多精彩内容