`
niuge
  • 浏览: 8487 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

java写一个能实现堆栈功能的程序

 
阅读更多
数组实现的堆栈:ArrayStack.java
public class ArrayStack {
    Object[] m_elements;
    int m_size;

    public ArrayStack(int len) {
        m_elements = new Object[len];
        m_size = 0;
    }

    public ArrayStack() {
        this(50);
    }

    //  insert onto stack
    public void push(Object element) {
        m_elements[m_size] = element;
        m_size++;
    }

    // return and remove the top element
    public Object pop() {
        if (!this.isEmpty()) {
            Object obj = m_elements[m_size - 1];
            m_elements[m_size - 1] = null;
            m_size--;

            return obj;
        } else {
            return null;
        }
    }

    // return the top element
    public Object top() {
        if (!this.isEmpty()) {
            return m_elements[m_size - 1];
        } else {
            return null;
        }
    }

    // return 1   --> is empty
    // return 0   --> is not empty
    public boolean isEmpty() {
        return this.size() == 0;
    }

    public int size() {
        return m_size;
    }
}

使用链表实现(单链表) :
public class Stacklist {
    Node m_header;

    int m_size;

    public ListStack() {
        m_header = null;
        m_size = 0;
    }

    public void push(Object value) {

        m_header = new Node(value, m_header);

    }

    public Object pop() {
        if (!this.isEmpty()) {
            throw new RuntimeException("Stack underflow");
        }

        Object obj = m_header.element;

        m_header = m_header.next;

        return obj;
    }

    //  return reference to most recently added elemenet
    public Object peek() {
        if (!this.isEmpty()) {
            throw new RuntimeException("Stack underflow");
        }

        return m_header.element;
    }

    public boolean isEmpty() {
        return this.size() == 0;
    }

    //return the number of the queue's elements;
    public int size() {
        return m_size;
    }
}

链表的需要用到一个结点类 Node.java 代码如下
public class Node {
    Object element;
    Node next;
    
    public Node(Object theElement) {
        this(theElement, null);
    }

    public Node(Object theElement, Node n) {
        element = theElement;
        next = n;
    }

    public Object getElement() {
        return element;
    }

    public void setElement(Object element) {
        this.element = element;
    }

    public Node getNext() {
        return next;
    }

    public void setNext(Node next) {
        this.next = next;
    }
}
分享到:
评论

相关推荐

    Java写的一个进栈出栈的演示程序

    Java写的一个进栈出栈的演示程序,有界面

    java包与接口实验报告

    利用包可以把常用的类或功能相似的类放在一个包中。Java 语言提供系统包,其中包含了大量的类,可以在编写Java 程序时直接引用它们。为便于管理和使用它们,将这些类分为了不同的包。包又称类库或API 包,所谓API...

    java-long-stacktrace:长堆栈跟踪实现示例

    该项目是一个概念验证应用程序,用于在Java中实现长堆栈跟踪功能。 正常走线 演示的主要功能是 public static void main( String [] args) throws InterruptedException { ExecutorService executorService = ...

    JAVA虚拟机(JavaVirtualMachine)V5.0中文官方安装版

    Java虚拟机(JVM)是Java Virtual Machine的缩写,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能模拟来实现的。Java虚拟机有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的...

    java 面试题 总结

    但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...

    Java综合程序设计——计算器(实现运算符优先级的四则混合运算)

    一个计算器,有多种功能,如取对数、求平方根。最重要的是利用堆栈算法实现运算符优先级。

    Java虚拟机中冷对象的研究_骆凡.caj

    java 作为现在用户最多,使用最为广泛的技术,主要是由于一个...评估堆栈的正确性和效率通过一个访问障碍。该实验结果 以一系列 SPECjvm2008 的基准表示出来。根据不同的标准测试得垃圾回收小效率有 2%-5% 的提升。

    JAVA开源量化交易程序开发框架源代码

    (Kotlin语言对Java语言和类库兼容性良好,且对于空指针更为安全) web管理服务被移除。(安全增强,技术堆栈精简) 启动服务器可通过参数决定是否同时启动管理GUI,GUI由JavaFX实现。(易用性增强) web交易页面被...

    Text-Editor:用Java内置的应用程序。 功能很多,但主要功能是文本的撤消和重做,它不是使用java的内置功能构建的,而是借助堆栈和队列等数据结构实现的

    文本编辑器 用Java内置的应用程序。 功能很多,但主要功能是文本的撤消和重做,它不是使用java的内置功能构建的,而是借助堆栈和队列等数据结构实现的。

    二十一道面试程序.txt

    9. 用ajax技术实现一个级联菜单功能。 10.写出插入法进行排序代码。 11.编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",...

    java JGL标准程序库,类似C++的STL

    JGL实现了许多功能,可满足对一个集合库的大多数常规需求,它与C++的模板机制非常相似。JGL包括相互链接起来的列表、设置、队列、映射、堆栈、序列以及反复器,它们的功能比Enumeration(枚举)强多了。同时提供了...

    超级有影响力霸气的Java面试题大全文档

    但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...

    java计算器源码+文档

    类Calculator为程序主体部分,包括GUI的设计,各功能键的响应处理,各种异常的处理及帮助信息的设置 主要思想:1)将中缀表达式转化为后缀表达式 2):根据后缀表达式计算表达式结果 数据结构:堆栈(使用JAVA中util...

    SnakeScript Java游戏脚本引擎 v1.1

    SnakeScript是一款JAVA游戏模拟脚本引擎,程序代码类似于C。  本版新增功能及特性:  1.动态优先级设定;  2.动态实现脚本的加载、释放、暂停、恢复、结束等控制;  3.自动堆栈平衡;  4.无限级别函数调用...

    struts2项目

    一是所有的Struts2应用程序都是基于client/server HTTP交换协议,The Java Servlet API揭示了Java Servlet只是Java API的一个很小子集,这样我们可以在业务逻辑部分使用功能强大的Java语言进行程序设计。 二是提供...

    java动态日志注入工具anylog.zip

     2、参照该工程中已有的两个例子(一个是在方法开始插入日志,一个是在方法结束插入日志),实现TransformDescriptor和TransformHandler接口  3、把两个接口实现类的全路径,分别加到以下两个文件中  src/main/...

    自己动手写Java虚拟机

    虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java虚拟机屏蔽了与具体操作系统平台相关的...

    Java虚拟机指令手册+复习面试题+从入门到进阶完整资源合集

    Java Virtual Machine(Java虚拟机),它bai是一个虚构出来du的计算机,是通过在实际的计算机上仿zhi真模拟各种计算机功能dao来实现的,。Java虚拟机有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令...

    jsr80 java 访问 usb

    它包括一个 RMI proxy 和一个 daemon 应用程序,它让 Java 应用程序可以访问远程计算机上的 USB 设备。 usb.util : 这个包提供了一些有用的实用程序,可以将 firmware下载到 USB 设备上、将 USB 系统的内容转储到 ...

    java课程设计实验报告

    一、要解决的问题 设计GUI界面的计算器程序,用户可以通过鼠标依次输入参加计算的数值进行加、减、乘、除等混合运算功能。可参照windows平台上的...实现时钟程序用到了paint 与 repaint 三、设计 ...................

Global site tag (gtag.js) - Google Analytics