热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java实现栈,队列数据结构

java实现栈publicclassStackForInt{储存数据的栈privateNodeStackForInt[];栈的最大容量privateintmaxSize


//java实现栈

public class StackForInt {

    // 储存数据的栈

    private Node StackForInt[];



    // 栈的最大容量

    private int maxSize;



    // 栈的当前容量

    private int size;

    

    //分别保存node中最大值和最小值,在栈push和pop时都要来保存这个值,特别是在pop时,当出栈的数是最大或者最小时,就需要更新

    //maxNode,minNode.代码中还没有实现,后续增加。

    

    private T maxNode;

    private T minNode;

    public T getMax(){

        return maxNode;

    }

    

    public T getMin(){

        return minNode;

    }



    // 不传参数,默认栈的最大容量为100

    public StackForInt() {

        this(100);

    }



    public StackForInt(int maxSize) {

        // 如果传入的参数小于或等于0,则设置最大容量为100

        if (maxSize <&#61; 0)

            maxSize &#61; 100;

        this.maxSize &#61; maxSize;

    }



    // 初始化栈&#xff0c;在堆中先申请好内存空间

    public void initStackForInt() {

        Node[] StackForIntNodes &#61; new Node[maxSize];

        StackForInt &#61; StackForIntNodes;

        for (int i &#61; 0; i
            StackForInt[i] &#61; new Node();

        }

        // 栈的当前大小为0

        size &#61; 0;

    }



    // 栈的基本方法之一&#xff0c;获得栈顶元素

    public Node getTop() {

        // 栈中没有元素&#xff0c;则返回空

        if (size &#61;&#61; 0)

            return null;

        return StackForInt[size-1];

    }



    // 栈的基本方法之一&#xff0c;入栈

    public boolean push(Node StackForIntNode) {

        // 栈已满&#xff0c;入栈失败

        if (size >&#61; maxSize)

            return false;

        size&#43;&#43;;

        StackForInt[size - 1] &#61; StackForIntNode;

        

        return true;

    }



    // 栈的基本方法之一&#xff0c;出栈

    public Node pop() {

        // 如果栈已空&#xff0c;则返回null

        if (size <&#61; 0)

            return null;

        size--;

        return StackForInt[size];

    }



    // 栈是否为空

    public boolean isEmpty() {

        if (size <&#61; 0)

            return true;

        return false;

    }



    // 栈的基本方法之一&#xff0c;遍历栈

    public void traverse() {

        for (int i &#61; 0; i
            System.out.println(StackForInt[i].get());

        }

    }



    /**

     * &#64;param args

     */

    public static void main(String[] args) {

        StackForInt StackForInt &#61; new StackForInt();

        StackForInt.initStackForInt();

        StackForInt.push(new Node("Anybody1"));

        StackForInt.push(new Node("Anybody2"));

        StackForInt.push(new Node("Anybody3"));

        StackForInt.traverse();

    }

    

    static class Node {

        //要存储的信息

        private T nodeinfo;

        

        public Node(){

            this(null);

        }

        

        public Node(T info){

            this.nodeinfo &#61; info;

        }

        //set方法

        public void set(T info){

            this.nodeinfo &#61; info;

        }

        //get方法

        public T get(){

            return nodeinfo;

        }

    }



}






推荐阅读
  • Java集合框架特性详解与开发实践笔记
    Java集合框架特性详解与开发实践笔记 ... [详细]
  • 探索偶数次幂二项式系数的求和方法及其数学意义 ... [详细]
  • 本文深入探讨了Java中正确使用return语句的方法。通过详尽的示例和解释,帮助读者理解return语句在不同场景下的应用,提升代码质量和可读性。希望读者在阅读后能够掌握return语句的最佳实践,从而在实际开发中更加得心应手。 ... [详细]
  • 捕获并处理用户输入数字时的异常,提供详细的错误提示与指导
    在用户输入数字时,程序能够有效捕获并处理各种异常情况,如非法字符或格式错误,并提供详尽的错误提示和操作指导,确保用户能够准确输入有效的数字数据。通过这种方式,不仅提高了程序的健壮性和用户体验,还减少了因输入错误导致的系统故障。具体实现中,使用了Java的异常处理机制,结合Scanner类进行输入读取和验证,确保了输入的合法性和准确性。 ... [详细]
  • 深入解析 Java UTC 时间处理技术与应用 ... [详细]
  • Java SE 文件操作类详解与应用
    ### Java SE 文件操作类详解与应用#### 1. File 类##### 1.1 File 类概述File 类是 Java SE 中用于表示文件和目录路径名的对象。它提供了丰富的方法来操作文件和目录,包括创建、删除、重命名文件,以及获取文件属性和信息。通过 File 类,开发者可以轻松地进行文件系统操作,如检查文件是否存在、读取文件内容、列出目录下的文件等。此外,File 类还支持跨平台操作,确保在不同操作系统中的一致性。 ... [详细]
  • 通过采用用户数据报协议(UDP),本研究设计并实现了一种高效的文件传输方法。在发送端,系统利用Java编程语言中的相关类库,如`File`和`FileInputStream`,实现了文件的读取与分段处理,确保了数据的快速传输。该方法不仅提高了传输效率,还降低了网络拥塞的风险,适用于大规模文件传输场景。 ... [详细]
  • 在处理大数相加的问题时,有许多方法可以借鉴。本文介绍了两种不同的函数式编程方法:一种是从网络上找到的经典实现,另一种是作者自行设计的创新方案。通过函数式编程的方式重新实现了这两种方法,其中经典实现简洁明了,而创新方案则在性能和可读性方面有所提升。这些方法不仅适用于大数相加,还可以扩展应用于其他数值计算场景。 ... [详细]
  • 本文介绍了UUID(通用唯一标识符)的概念及其在JavaScript中生成Java兼容UUID的代码实现与优化技巧。UUID是一个128位的唯一标识符,广泛应用于分布式系统中以确保唯一性。文章详细探讨了如何利用JavaScript生成符合Java标准的UUID,并提供了多种优化方法,以提高生成效率和兼容性。 ... [详细]
  • Java 中 ZonedDateTime 类的天数方法详解及示例代码 ... [详细]
  • 每日精选Codeforces训练题:1119E(贪心算法)、821C(栈模拟)和645D(拓扑排序)
    题目涉及三种不同类型的算法问题:1119E(贪心算法)、821C(栈模拟)和645D(拓扑排序)。其中,1119E的问题背景是有n种不同长度的棍子,长度分别为2^0, 2^1, …, 2^(n-1),每种棍子的数量为a[i]。任务是计算可以组成的三角形数量。根据三角形的性质,任意两边之和必须大于第三边。该问题可以通过贪心算法高效解决,通过合理选择棍子组合来最大化三角形的数量。 ... [详细]
  • 在2021-2022 ACM集训队月度编程挑战赛第二轮中,题目“最大值与最小值的选择”要求参赛者处理一个包含n个元素的数组,并给定一个整数k。任务是通过选择特定的子数组,计算并返回这些子数组的最大值和最小值之间的差值。该问题考验了选手对数组操作和优化算法的理解与应用能力。 ... [详细]
  • 如何在 Node.js 环境中将 CSV 数据转换为标准的 JSON 文件格式? ... [详细]
  • 分布式开源任务调度框架 TBSchedule 深度解析与应用实践
    本文深入解析了分布式开源任务调度框架 TBSchedule 的核心原理与应用场景,并通过实际案例详细介绍了其部署与使用方法。首先,从源码下载开始,详细阐述了 TBSchedule 的安装步骤和配置要点。接着,探讨了该框架在大规模分布式环境中的性能优化策略,以及如何通过灵活的任务调度机制提升系统效率。最后,结合具体实例,展示了 TBSchedule 在实际项目中的应用效果,为开发者提供了宝贵的实践经验。 ... [详细]
  • Prim算法在处理稠密图时表现出色,尤其适用于边数远多于顶点数的情形。传统实现的时间复杂度为 \(O(n^2)\),但通过引入优先队列进行优化,可以在点数为 \(m\)、边数为 \(n\) 的情况下显著降低时间复杂度,提高算法效率。这种优化方法不仅能够加速最小生成树的构建过程,还能在大规模数据集上保持良好的性能表现。 ... [详细]
author-avatar
独角式恋爱牛仔
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有