从尾到头打印链表
来源:互联网 发布:java逆波兰式 编辑:程序博客网 时间:2024/06/14 22:14
输入一个链表,从为到头打印链表每个节点的值
/** * 解法一——使用栈的出栈和入栈,完成数据的逆序 */import java.util.ArrayList;import java.util.Stack;// 链表中节点的定义class ListNode { int val; // 节点数据域 ListNode next = null; // 下一节点指针 // 初始化节点的构造器 ListNode(int val) { this.val = val; }}public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { // 创建一个栈 Stack<Integer> stack = new Stack<>(); // 将链表中数据元素入栈 while (listNode != null) { stack.push(listNode.val); listNode = listNode.next; } // 数据元素出栈,并放入ArrayList中 ArrayList<Integer> list = new ArrayList<>(); while (!stack.isEmpty()) { list.add(stack.pop()); } return list; }}
/** * 解法二——利用Collections.reverse()方法完成反转操作 */import java.util.ArrayList;import java.util.Collections;class ListNode { int val; // 节点数据域 ListNode next = null; // 指向下一个节点的指针 // 初始化节点的构造器 ListNode(int val) { this.val = val; }}public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ArrayList<Integer> list = new ArrayList<Integer>(); while (listNode != null) { list.add(listNode.val); listNode = listNode.next; } // 使用Collections的reverse方法,直接将list反转 Collections.reverse(list); return list; }}
/** * 解法三——递归调用,将数据放入list中 */import java.util.ArrayList;class ListNode { int val; // 节点数据域 ListNode next = null; // 指向下一个节点的指针 // 初始化节点的构造器 ListNode(int val) { this.val = val; }}public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ArrayList<Integer> list = new ArrayList<Integer>(); if (listNode == null) return list; get(listNode, list); return list; } public void get(ListNode listNode, ArrayList<Integer> list) { if (listNode.next == null) { list.add(listNode.val); // 退出递归调用 return; } // 递归调用,加入数据 get(listNode.next, list); list.add(listNode.val); }}
阅读全文
0 0
- 从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- 1、从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- 【20】从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- Offer5 从尾到头打印链表
- 从尾到头打印链表
- 1、从尾到头打印链表
- 从尾到头打印链表
- POJ 1410 Intersection(判断线段交和点在矩形内)
- 按键精灵模拟键盘批量输入英文大小写
- 【技能库】--LockSupport的使用(243)
- Hibernate中配置C3P0数据源步骤及hbm.xml 文件详解
- 强化学习之深度Q函数
- 从尾到头打印链表
- 2008/2109/2535: [Noi2010]航空管制
- HBase写入优化--write buff
- 解决MAC下MySQL忘记初始密码的方法
- 3.Maven坐标和依赖
- uva11464(递推)
- ROSjava探索(更新完结)
- 电子硬件工程师要求?
- 小米wifi放大器如何使用最佳(wifi信号网速调优)