【剑指offer】6.从尾到头打印链表

在这里插入图片描述

书上是输出就行,牛客网上是返回一个数组,这是放在数组返回的,输出就直接输出了。

利用栈

利用栈就是遍历链表的同时,压入栈,注意是while只要头节点不为空就压入,然后再只要不为空就弹出到arraylist
java 中栈的用法:
(1)stack.push(i) 压栈
(2)stack.pop()弹出栈并且删除
(3)stack.peek()查看栈顶 syso(stack)就可查看全部
(4)stack.empty 或stack.isEmpty()判是否为空

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

利用递归

 /**
    *    public class ListNode {
    *        int val;
    *        ListNode next = null;
    *
    *        ListNode(int val) {
    *            this.val = val;
    *        }
    *    }
    *
    */
    import java.util.ArrayList;
    public class Solution {
        ArrayList<Integer> arrayList = new ArrayList<>();
        public ArrayList<Integer> printListFromTailToHead(ListNode listNode){
            if(listNode!=null){
               printListFromTailToHead(listNode.next);
               arrayList.add(listNode.val);
            }
            return arrayList;
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值