Java:堆栈实现

时间:2014-11-29 19:33:16

标签: java stack

我需要根据以下代码编写一个名为StackEmptyException的异常类?它应该是RuntimeException类的子类。

public interface IStack {
      public Object pop() throws StackEmptyException;
      public void push(Object o);
      public boolean isEmpty();
      public int size();
      public void clear();
}

这就是我需要写的全部内容吗?:

 public class StackEmptyException extends RuntimeException {

      public StackEmptyException(){
          super();
      }
  }

然后,我如何编写IStack接口的实现,称为Stack。如果用户尝试从空列表中弹出(),该类应生成适当的异常。您的堆栈应该由一个对象数组支持,这些对象应该在它变满的情况下调整大小。

我是初学者所以请解释你的解决方案,好像我是一个三岁的孩子:)

2 个答案:

答案 0 :(得分:0)

实施isEmpty()后,您可以执行pop()这样的操作:

public Object pop() throws StackEmptyException{
    if(isEmpty()){
         throw new StackEmptyException();
    }else{
         // 
         // return stackLastElement;
    }

}

在push方法中,你需要检查你的向量是否有空间来推送对象:

   public void push(Object o){
       //...
       if(allPositionsInStackAreFille){
           //extend Your Stack
       }
       // put the object onto right place
   }

答案 1 :(得分:0)

现在需要一个实现接口IStack的类(当接口的I太旧时)。
像这样的东西

public class MyStack implement IStack{
      public Object pop() throws StackEmptyException{
        if(size==0){throw new StackEmptyException();}
        //otherwise return the last component. return stack[size--];
      };
      public void push(Object o)throws StackOverFlow{if(size==stack.length-1){throw new StackOverFlow();}};
      public boolean isEmpty(){return size==0;};
      public int size(){return size;};
      public void clear(){size=0;};
      ///////////////
      private Object[] stack;
      private final static default_stack_size=16;
      private boolean can_extended=false;
      public MyStack(){stack=new Object[16];}
      public MyStack(int size){stack=new Object[size];}
}

它还取决于您希望实现堆栈的方式,也许您希望将其作为大小或许多东西使其可扩展或静态。