代码随想录DAY10

本文介绍了Java中栈和队列的基本概念,包括栈的ArrayDeque与LinkedList的区别,并通过分析232题和225题,探讨了如何使用栈实现队列以及队列实现栈的方法,提出了不同的实现思路和启发。
摘要由CSDN通过智能技术生成

java的栈和队列

基本概念
  • 栈是一种只能在同一端进行插入和删除(栈顶top)的线性表,运算受限。
  • 进栈/人栈用push, 退栈或出栈用pop
    • boolean empty()
    • void push(E e) (和add()方法效果相同)
    • E pop():出栈并返回栈顶元素
    • E peek():返回栈顶元素(不出栈)
栈的实现方式

顺序栈和链栈
1、顺序栈:基于数组实现

  • 定义一个顺序栈:Stack stack = new Stack<>(), java中Stack是继承Vector类。但需要注意java中栈常用deque而很少采用Stack,因为效率不高。可以上进上出,上进下出,甚至下进上出
    2、链栈:用LinkedList

在这里插入图片描述
在这里插入图片描述

ArrayDeque与LinkList区别:

ArrayDeque:

  • 数组结构
  • 插入元素不能为null
  • 无法确定数据量时,后期扩容会影响效率

LinkList:

  • 链表结构
  • 插入元素能为null
  • 无法确定数据量时,有更好表现

232题:用栈实现队列

使用栈实现队列的下列操作:

push(x) – 将一个元素放入队列的尾部。
pop() – 从队列首部移除元素。
peek() – 返回队列首部的元素。
empty() – 返回队列是否为空。

思考

1、用两个stack来实现。主要在于取元素的操作,对于队列来说,取元素是取出最上面一个,用栈来实现,需要先将一个栈中的元素放入另一个再取出。

class MyQueue {
   
    Stack<Integer> stackIn;
    Stack<Integer> stackOut;

    public MyQueue() {
   
        stackIn &
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值