算法训练营第10天|理论基础 232.用栈实现队列 225. 用队列实现栈

理论基础

Java中实现有以下两种方式:

  • stack类
  • LinkedList实现(继承了Deque接口)
push/pop
(1) Stack实现

Stack底层是使用Vector的,而Vector支持线程同步,所以整体性能相对较低,如果没有多线程的场景,不建议使用Stack。

Stack<Integer> stack = new Stack<Integer>();
(2)LinkedList实现

LinkedList实现了List,Deque(实现了Queue接口)的接口,底层是双向链表实现的,所以不仅可以表示栈,也可以表示队列。

Deque<Integer> stack = new LinkedList<>();

队列

offer/pull

peek:队列最前面的。

(1)使用LinkedList实现队列

底层是链表

Queue<Integer> deque = new LinkedList<>();
(2)使用ArrayDeque实现队列

底层是数组实现

 Queue<Integer> queue = new ArrayDeque<>();

232.用栈实现队列

一个栈管理压入,一个栈管理弹出。

分清this.pop和stackout.pop的区别。this.push和stackout.push的区别。

public int peek() {
    int result=this.pop();
    stackOut.push(result);
    return result;
}

225. 用队列实现栈

1.队列是先进先出的规则,把一个队列中的数据导入另一个队列中,数据的顺序并没有变,并没有变成先进后出的顺序。如果用两个队列操作,另一个队列只是当备份的角色。

2.获取栈顶元素相当于构建的栈弹出再压入。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值