2014년 3월 28일 금요일

[자바자료구조]자바로 구현한 스택(Java Stack 만들기),[자바교육/자바강좌/자바교육잘하는곳/자바교육추천/자바실무교육/JAVA/JAVA교육/JAVA학원/JAVA실무교육]

[자바자료구조]자바로 구현한 스택(Java Stack 만들기),[자바교육/자바강좌/자바교육잘하는곳/자바교육추천/자바실무교육/JAVA/JAVA교육/JAVA학원/JAVA실무교육] 

ArrayStack.java


interface Stack {   
 public boolean isEmpty();
 public int peek();
 public void push(int theObject);
 public int pop();
}

class EmptyStackException extends RuntimeException {
   public EmptyStackException()   {
      super ("The stack is empty.");
   }

   public EmptyStackException (String message)   {
      super (message);
   }
}


public class ArrayStack implements Stack   {            
             int top;         // current top of stack
             int [] stack;   // element array

               
             public ArrayStack(int initialCapacity) {
                  if (initialCapacity < 1)
                  throw new IllegalArgumentException
                                        ("initialCapacity must be >= 1");
                  stack = new int [initialCapacity] ; 
                  top = -1; 
            }

   
       public ArrayStack() { 
    this(20); 
       }
        
       public boolean isEmpty( ) { 
          return top == -1; 
       }       
       
        public int peek() {
               if (isEmpty() ) 
                     throw new EmptyStackException();
               return stack[top];
        }     


      
  public void push(int theElement) {
  // increase array size if necessary    
  if (top == stack.length - 1) ensureCapacity();
         
            // put theElement at the top of the stack  
            stack[++top] = theElement; 
      }


 
     public int pop() {
            if  (isEmpty())
                  throw new EmptyStackException();
            int topElement = stack[top];
             return topElement;
      }    

 private void ensureCapacity()  {
      int[] larger = new int[stack.length*2];

      for (int index=0; index < stack.length; index++)
         larger[index] = stack[index];

      stack = larger;
   }

   public String toString() {
    if (isEmpty())
      return "<empty stack>";
    String result = "<stack :";
    for (int i = top; i >= 0; i--)
      result += stack[i] + " ";
    return result + ">";
  } // end toString
}

댓글 없음:

댓글 쓰기