您的位置:首页 > Web前端

《剑指offer》编程题java实现(三):从尾到头打印链表

2018-03-05 13:31 645 查看
问题描述:

输入一个链表,从尾到头打印链表每个节点的值。

思路一:

import java.util.ArrayList;
import java.util.Stack;
import com.nowcoder.ListNode;
/**
*
* @author sk
*思路一:使用栈先进后出的特点,先将链表中的值,从头到尾依次压入,然后再从尾到头依次弹出到数组中,
*返回数组即可
*/
public class Demo3 {

public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {

ArrayList<Integer> arr=new ArrayList<>();
//链表为空
if (listNode==null) {
return arr;
}
Stack<Integer> stack=new Stack<>();
//对listnode遍历
while(listNode!=null) {
stack.push(listNode.val);
listNode=listNode.next;
}
while (!stack.isEmpty()) {
arr.add(stack.pop());
}
return arr;
}
}


思路二

import java.util.ArrayList;
/**
*
* @author sk
*思路二:采用递归,递归本质上也是一个栈结构,但是如果链表很长,就会导致调用的层级很深,有可能导致函数栈溢出,所以还是采用思路一
*/
public class Demo3_1 {

public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> arr = new ArrayList<>();
if (listNode != null) {
while (listNode.next != null) {
printListFromTailToHead(li
4000
stNode.next);
arr.add(listNode.val);
}
}
return arr;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: