您当前的位置: 首页 >  Java

郭梧悠

暂无认证

  • 3浏览

    0关注

    402博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

栈Stack的相关操作(java)

郭梧悠 发布时间:2012-02-26 11:25:36 ,浏览量:3

/*  * To change this template, choose Tools | Templates  * and open the template in the editor.  */ package arthur.datastruct.programe; import java.util.*; /**  *  * @author dell  */ public class MyStack {     private int size;//栈中元素的个数     private Object[] elements;//栈数组     private final int DEFAULT_CAPACITY = 10;//栈默认的大小     public MyStack() {         this.size = 0;         elements = new Object[DEFAULT_CAPACITY ];     }     /**      * 返回栈中元素的个数      * @return       */     public int size() {         return size;     }     /**      * 判断栈是否为空      * @return       */     public boolean empty() {         return 0 == size();     }     /**      * 返回栈的首部但不移除首部元素      * @return       */     public Object peek() {         if (this.empty()) {             throw new EmptyStackException();         }         int index = size;         return elements[--index];     }     /**      *  移除堆栈顶部的对象,并作为此函数的值返回该对象。      * @return       */     public Object pop() {         Object object = this.peek();         int index = size;         remove(--index);         return object;     }     /**      * 删除索引为index的那个元素      * @param index       */     public void remove(int index) {         if (index >= size()) {             throw new ArrayIndexOutOfBoundsException(index + " >= "                     + size());         } else if (index < 0) {             throw new ArrayIndexOutOfBoundsException(index);         }                  int j = size - index - 1;//得到位于索引index之后的元素的下标         if(j>0)//如果下标存在             System.arraycopy(elements, index+1, elements, index, j);                      elements[--size] = null;         }     /**      * 入栈操作,把项压入堆栈顶部。      * @param object      * @return       */     public Object push(Object object) {         if(null==object)             throw new NullPointerException();         if (this.size > elements.length) {             this.doubleCapacity();         }         elements[size++] = object;         return object;     }     /**      * 扩充栈的空间,如果栈满了,就把空间扩从为原来的二倍      * @return       */     private void doubleCapacity() {         int newCapacity = elements.length
关注
打赏
1663674776
查看更多评论
立即登录/注册

微信扫码登录

0.0373s