【JAVA】输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。

博客介绍了List的两种初始化方式,ArrayList基于数组,查询快、增删改慢,适合频繁查询;LinkedList基于链表,增删改快、查询慢,适合频繁增删改。还比较了Stack的peek()和pop()函数,前者返回栈顶元素但不出栈,后者返回并出栈。

List两种初始化方式
方式一
List myList = new ArrayList();
方式二
List myList = new LinkedList();
1
2
3
4
5
List两种初始化方式的区别及其使用场景
.
List myList = new ArrayList();
.
方式一的底层是靠数组来实现构建该结构的,数组的优点就是“查询”特别快,相对来说,“增删改”较慢(PS:比如我要在数组中插入一条数据,那么原来该位置的数据及其后面的数据都需要向后移动一位下标)。所以该种方式适合需要频繁查询的对象。
.
List myList = new LinkedList();
.
方式二的底层是靠链表来实现构建该结构的,链表的优点就是“增删改”特别快,相对来说,“查询”较慢(PS:比如我要在链表中插入一条数据,那么原来该位置的节点及其前面的节点断掉指针,将待插入的节点连接上即可)。所以该种方式适合需要频繁增删改的对象。
.
返回栈定元素两种类型比较
.
Stack.peek()
peek()函数返回栈顶的元素,但不弹出该栈顶元素。
.
Stack.pop()
pop()函数返回栈顶的元素,并且将该栈顶元素出栈。

public class ListNode {
	int val;
	protected ListNode next = null;

	ListNode(int val) {
		this.val = val;
	}
}
package 牛客网练习题;
import java.util.Stack;
import java.util.ArrayList;
public class Solution {
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        Stack<Integer> stack = new Stack<>();//栈初始化
        //ArrayList<Integer> list = new ArrayList<>();
        while (listNode != null) {//判断链表中该指针不为空
            stack.push(listNode.val);//将该指针的值压栈
            listNode = listNode.next;//将当前指针的下一个指针赋给当前指针
        }
 
        ArrayList<Integer> list = new ArrayList<>();//数组链表初始化
        while (!stack.isEmpty()) {//循环条件:栈不为空
            list.add(stack.pop());//返回栈定元素,并使栈定元素出栈
        }
        return list;       
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-_星耀_-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值