数据结构(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" 的简称。那就说明元素可以从队头出队和入队,也可以从队尾出队和入队。

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







用栈实现队列



相关推荐
xierui12312318 小时前
AI Agent 隐私架构:本地化重点为什么是登录态与执行权限
java·人工智能·网络安全·架构
cfm_291418 小时前
Spring AI Tool 调用架构全解
java·人工智能·spring
法哥201218 小时前
用 C++ 控制 CMW100,到底在干什么?
开发语言·c++
sun༒18 小时前
Spring @Scheduled 定时任务详解:Cron表达式、执行顺序、优先级与并行调度
java·后端·spring
QH1392923188018 小时前
NVIDIA H200 H300服务器
运维·服务器·开发语言·网络·信息与通信
一次旅行18 小时前
DeepSeek‑V4‑Flash‑Vision‑Exp 小白入门实战|3种传图方式、完整可跑代码、避坑排障
java·前端·人工智能
OPEN-F18 小时前
Python进阶教程:单元测试与代码质量
开发语言·python·单元测试
阿里嘎多学长18 小时前
2026-08-20 GitHub 热点项目精选
开发语言·程序员·github·代码托管
野生技术架构师18 小时前
Spring Boot 实现数据脱敏:自定义注解 + Jackson 序列化器
java·spring boot·后端
其实防守也摸鱼19 小时前
Codex破局:前端组件秒级生成的技术文章大纲
开发语言·前端·人工智能·学习·安全·web安全