数据结构(Java实现)-栈和队列


栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。

先进后出



栈的使用


栈的模拟实现

上述的主要代码

java 复制代码
public class MyStack {
    private  int[] elem;
    private int usedSize;

    public MyStack() {
        this.elem = new int[5];
    }

    @Override
    public String toString() {
        return "MyStack{" +
                "elem=" + Arrays.toString(elem) +
                ", usedSize=" + usedSize +
                '}';
    }

    //压栈
    public void push(int val){
        if(isFull()){
            elem=Arrays.copyOf(elem,2*elem.length);
        }
        elem[usedSize++]=val;

    }
    public boolean isFull(){
        return this.usedSize==elem.length;
    }

    //出栈
    public int pop(){
        if(empty()){
            throw new StackEmptyException("栈内元素为空");
        }
        return elem[--usedSize];
    }
    public  boolean empty(){
        return usedSize==0;
    }

    //获取栈顶元素
    public int peek(){
        if(empty()){
            throw new StackEmptyException("栈内元素为空");
        }
        return elem[usedSize-1];
    }

}

改变元素的序列



将递归转化为循环

比如:逆序打印链表

结果如下













队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(FirstIn First Out) 入队列:进行插入操作的一端称为队尾(Tail/Rear) 出队列:进行删除操作的一端称为队头(Head/Front)



队列的使用

Queue是个接口,在实例化时必须实例化LinkedList的对象,因为LinkedList实现了Queue接口


队列模拟实现(利用双向链表)

先考虑一般情况,再考虑特殊情况




循环队列

环形队列通常使用数组实现


注意事项




代码如下


双端队列 (Deque)

双端队列(deque)是指允许两端都可以进行入队和出队操作的队列,deque 是 "double ended queue" 的简称。那就说明元素可以从队头出队和入队,也可以从队尾出队和入队。

栈和队列均可以使用该接口。







用栈实现队列



相关推荐
wuyk5556 分钟前
从零吃透 MQTT 通信|第 10 章 阿里云 / 腾讯云 MQTT 设备完整对接实战,三元组、签名、设备上云调试
c语言·开发语言·stm32·学习·阿里云·云计算·腾讯云
名字还没想好☜7 分钟前
Java Collectors.groupingBy 进阶:多级分组、下游收集器与统计聚合一次搞定
java·windows·后端·python·spring
Wang's Blog11 分钟前
Java框架快速入门: Spring Security+OAuth2之前端按钮级安全与路由守卫
java·安全·spring
ocean210329 分钟前
2025-2026年Java语言及生态面试高频知识点洞察
java·开发语言·面试
2302_11135 分钟前
java时间类型
java·开发语言
用户81818706274640 分钟前
第25章 Redis集群脑裂实录:一次真实故障复盘
java·后端
运行时异常42 分钟前
【WMS 仓储系统集成 AI Agent 实战】第 6 讲:RAG 知识库——“输出简单流程“为什么检索不到任何东西
java
小七在进步43 分钟前
类和对象(三)
java·开发语言
夜不会漫长44 分钟前
C++:类和对象(1)
java·开发语言·c++