java栈数据结构的实现方式-亚博电竞手机版

栈是java语言中最重要的数据结构之一,它的实现,至少应该包括以下几个方法:

  1. pop() 出栈操作,弹出栈顶元素。
  2. push(e e) 入栈操作
  3. peek() 查看栈顶元素
  4. isempty() 栈是否为空

另外,实现一个栈,还应该考虑到几个问题:

  1. 栈的初始大小以及栈满以后如何新增栈空间
  2. 对栈进行更新时需要进行同步

简单示例,使用数组实现栈,代码如下:

public class stack {        // java 不支持泛型数组,如需使用,请使用java提供的容器       private object[] stack;        // 栈的默认初始大小       private static final int init_size = 2;        // 栈顶索引       private int index;        public stack() {           stack = new object[init_size];           index = -1;       }        /**        * 构造方法        *         * @param initsize        *            栈的初始大小        */      public stack(int initsize) {           if (initsize < 0) {               throw new illegalargumentexception();           }           stack = new object[initsize];           index = -1;       }        /**        * 出栈操作        *         * @return 栈顶对象        */      public synchronized e pop() {           if (!isempty()) {               e temp = peek();               stack[index--] = null;               return temp;           }           return null;       }        /**        * 入栈操作        *         * @param obj        *            等待入栈的对象        */      public synchronized void push(e obj) {           if (isfull()) {               object[] temp = stack;               // 如果栈满,则创建空间为当前栈空间两倍的栈               stack = new object[2 * stack.length];               system.arraycopy(temp, 0, stack, 0, temp.length);           }           stack[  index] = obj;       }        /**        * 查看栈顶对象        *         * @return 栈顶对象        */      public e peek() {           if (!isempty()) {               return (e) stack[index];           }           return null;       }        /**        * 查看栈是否为空        *         * @return 如果栈为空返回true,否则返回false        */      public boolean isempty() {           return index == -1;       }        /**        * 查看栈是否满        *         * @return 如果栈满返回true,否则返回false        */      public boolean isfull() {           return index >= stack.length - 1;       }   }

最后说明,java中实现了栈(java.util.stack)的数据结构,它是通过继承vector类实现的,一般情况下我们直接拿来用就行了。

展开全文
内容来源于互联网和用户投稿,文章中一旦含有亚博电竞手机版的联系方式务必识别真假,本站仅做信息展示不承担任何相关责任,如有侵权或涉及法律问题请联系亚博电竞手机版删除

最新文章

网站地图