posts - 97,  comments - 93,  trackbacks - 0

          com.ibm.nicky.stack--
                                        ++ExceptionStackEmpty
                                        ++Stack
                                        ++StackInterface  
                                        ++TestStack
          ********************************************************************************************

           1package com.ibm.nicky.stack;
           2
           3/**
           4 * @author QuQiang
           5 *
           6 *  Try to use pop(top) method when the Stack is null, ExceptionStackEmpty.
           7 */

           8public class ExceptionStackEmpty extends Exception{
           9     public ExceptionStackEmpty(String e){
          10      super(e);
          11     }

          12     
          13     private static final long serialVersionUID = 4983277878327382L;// Enable at once but have no impact on the sub-class
          14}

          15

           1package com.ibm.nicky.stack;
           2
           3/**
           4 * @author QuQiang
           5 *
           6 */

           7public class Stack<E> implements StackInterface<E> {
           8    
           9    private final static int CAPACITY = 1024// The default capacity of Stack  
          10    private int capacity = 0// The current capacity of Stack
          11    private Object[] element; // E array
          12    private int toppiont = -1// the current top piont 
          13
          14    public Stack(){
          15        this(CAPACITY);
          16    }

          17    public Stack(int cap){
          18        capacity = cap ;
          19        element = new Object[capacity];
          20    }

          21    /* (non-Javadoc)
          22     * @see com.ibm.nicky.stack.Stack#getSize()
          23     */

          24    public int getSize() {
          25        return (toppiont+1);
          26    }

          27
          28    /* (non-Javadoc)
          29     * @see com.ibm.nicky.stack.Stack#isEmpty()
          30     */

          31    public boolean isEmpty() {
          32        return (toppiont<0);
          33    }

          34
          35    /* (non-Javadoc)
          36     * @see com.ibm.nicky.stack.Stack#pop()
          37     */

          38    public E pop() throws ExceptionStackEmpty {
          39        E TopPiontValue;
          40        if(isEmpty()){
          41            throw new ExceptionStackEmpty("Stack is Empty");
          42        }

          43        TopPiontValue = (E) element[toppiont];
          44        element[toppiont--= null;
          45        return TopPiontValue;
          46    }

          47
          48    /* (non-Javadoc)
          49     * @see com.ibm.nicky.stack.Stack#push()
          50     */

          51    public void push(E object) {
          52        if(getSize() == capacity){
          53            creatNew();
          54        }

          55        element[++toppiont] = object;
          56    }

          57
          58    /* (non-Javadoc)
          59     * @see com.ibm.nicky.stack.Stack#top()
          60     */

          61    public E top() throws ExceptionStackEmpty {
          62        if(isEmpty()){
          63            throw new ExceptionStackEmpty("Stack is Empty");
          64        }

          65        return (E)element[toppiont];
          66    }

          67    
          68    private Object creatNew(){
          69        int size = 0;
          70        if(capacity == 0){
          71            size = 1;
          72        }
          else{
          73            size = CAPACITY;  // Not optimized method
          74        }

          75
          76        Object[] temp = new Object[element.length+size];
          77        System.arraycopy(element, 0, temp, 0, element.length);
          78        element = temp;
          79        System.out.println("hava invoke this createNew");
          80        System.out.print("the current size of the Stack is :"+ element.length);
          81        return element;
          82    }

          83
          84}

          85

           1package com.ibm.nicky.stack;
           2
           3/**
           4 * @author QuQiang
           5 * 
           6 * Stack ADT interface
           7 */

           8public interface StackInterface<E> {
           9    /**
          10     * @return boolean if the Stack is empty.
          11     */

          12    public boolean isEmpty();
          13
          14    /**
          15     * @return int, the Size of the Stack.
          16     */

          17    public int getSize();
          18
          19    /**
          20     * 
          21     * @return the Object of the Stack top but not delete it.
          22     * @throws ExceptionStackEmpty
          23     *             the Stack is empty
          24     */

          25    public E top() throws ExceptionStackEmpty;
          26
          27    /**
          28     * 
          29     * @return the Object of the Stack top but delete it.
          30     * @throws ExceptionStackEmpty
          31     *             the Stack is empty
          32     */

          33    public E pop() throws ExceptionStackEmpty;
          34
          35    /**
          36     * push a object to the Stack top.
          37     */

          38    public void push(E object);
          39}

          40

           1package com.ibm.nicky.stack;
           2
           3/**
           4 * @author QuQiang
           5 *
           6 */

           7public class TestStack {
           8
           9  public static void main(String[] args){
          10      Stack<Integer> testStack = new Stack<Integer>(2);
          11      
          12      testStack.push(21);
          13      testStack.push(12);
          14      testStack.push(-9);
          15      
          16      try {
          17        System.out.println("testStack.top()="+testStack.top());
          18          System.out.println("testStack.pop()="+testStack.pop());
          19          System.out.println("testStack.top()="+testStack.top());
          20    }
           catch (ExceptionStackEmpty e) {
          21        e.printStackTrace();
          22    }

          23  }

          24}
          posted on 2007-08-03 18:14 wqwqwqwqwq 閱讀(999) 評論(0)  編輯  收藏 所屬分類: Data Structure && Algorithm
          <2007年8月>
          2930311234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678




          常用鏈接

          留言簿(10)

          隨筆分類(95)

          隨筆檔案(97)

          文章檔案(10)

          相冊

          J2ME技術網站

          java技術相關

          mess

          搜索

          •  

          最新評論

          閱讀排行榜

          校園夢網網絡電話,中國最優秀的網絡電話
          主站蜘蛛池模板: 连平县| 钦州市| 陇西县| 盐边县| 海晏县| 五常市| 舞阳县| 金堂县| 永州市| 宣化县| 于田县| 阳山县| 定襄县| 合川市| 修武县| 鹿泉市| 诏安县| 彭泽县| 彭水| 化德县| 通辽市| 遵义县| 北票市| 永兴县| 麦盖提县| 新化县| 绥中县| 萍乡市| 桐柏县| 南丹县| 玛沁县| 米脂县| 景宁| 鄂温| 辽中县| 山阳县| 德庆县| 鹿邑县| 称多县| 安陆市| 客服|