单向链表的反向(算法的基础知识)

来源:互联网 发布:苹果有些软件不信任 编辑:程序博客网 时间:2024/06/08 15:29

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

代码:
方法一:借助堆栈的先进后出来实现:

import java.util.Stack;import java.util.ArrayList;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<Integer> list = new ArrayList<>();        while (!stack.isEmpty()) {            list.add(stack.pop());        }        return list;           }}

方法二:借助递归实现(递归的本质还是使用了堆栈结构)

    import java.util.ArrayList;    import java.util.Stack;    public class Solution {    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {    ArrayList<Integer> list=new ArrayList<Integer>();    ListNode pNode=listNode;    if(pNode!=null){        if(pNode.next!=null){            list=printListFromTailToHead(pNode.next);        }        list.add(pNode.val);    }    return list;}

}

0 0
原创粉丝点击