[剑指offer]算法3 链表
2017-10-28 13:50
162 查看
时间限制 1s 空间限制 32768K
题目描述输入一个链表,从尾到头打印链表每个节点的值。
【问题分析】JAVA中没有指针,所以我们不能像C语言那样用指针来打印每个节点的值,这里我们用栈来解决本题。
这都是看了网上的分析之后总结理解一下。还有一种就是利用递归的方法。这里就不讲了,可以自行查阅资料。
代码如下:(栈)
package Offer;import java.util.ArrayList;
import java.util.Stack;
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
public class LianBiao {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { //<Integer> 范型
//将数据添加到栈中
Stack<Integer> stack = new Stack(); //new一个名为stack 的栈
ArrayList<Integer> arrlist = new ArrayList(); //new一个名为arrlist的数组
while(listNode!=null) //当对象存在值得时候
{
stack.push(listNode.val); //将对象的val值push栈中
listNode = listNode.next; //对象指向下一个对象
}
while(!stack.isEmpty()) { //当栈不为空的时候 出栈添加到数组中 返回数组名
arrlist.add(stack.pop());
}
return arrlist;
}
public static void main(String[] args) {
ArrayList<Integer> arrlist = new ArrayList();
ListNode listNode = new ListNode(20);
LianBiao lbBiao = new LianBiao();
arrlist=lbBiao.printListFromTailToHead(listNode);
int i=arrlist.size();
System.out.println("size="+i+" "+arrlist.get(0));
}
}
相关文章推荐
- 剑指offer 算法(链表 树)
- 单链表中的常见算法问题(剑指offer5/13/15/16/17)
- 剑指offer-算法题练习:part18 合并两个排序的链表
- 剑指offer-算法题练习:part16 链表中倒数第k个结点
- 剑指Offer 链表相关算法
- 剑指offer-算法题练习:part17 反转链表
- 剑指offer--关于链表操作的算法
- 【剑指offer】面试题37:两个链表的第一个公共结点
- 剑指offer-chapter3-面试题16-反转链表(java)
- 剑指offer 算法题 python版 更新中
- 剑指Offer面试题5——倒序输出一个链表
- 【九度OJ1518】|【剑指offer16】反转链表
- 剑指Offer之 - 在O(1)时间删除链表结点
- 剑指offer面试题之求两个链表的第一个公共点
- 剑指offer15 链表中倒数第k个结点
- 剑指offer-反转链表
- 剑指offer-面试题 13:在 O( 1)时间删除链表结点
- 剑指offer--16.反转链表
- 剑指offer-面试题16:反转链表
- 【剑指offer】面试题15:链表中倒数第k个结点