본문 바로가기
CS/자료구조

int stack 자바 구현 코드

by Renechoi 2023. 6. 17.

자료구조 중 하나인 Stack을 자바로 구현한 코드이다. int 타입을 처리하는 stack이다. 

 

 

package datastructure.stack.intstack;

public class IntStack {
   private int max;
   private int pointer;
   private int[] stack;

   public IntStack(int capacity) {
      pointer = 0;
      max = capacity;

      try {
         stack = new int[max];
      } catch (OutOfMemoryError e) {
         max = 0;
      }
   }

   public int push(int value) {
      if (pointer >= max) {
         throw new OverflowIntStackException();
      }
      return stack[pointer++] = value;
   }

   public int pop() {
      if (pointer <= 0) {
         throw new EmptyIntStackException();
      }
      return stack[--pointer];
   }

   public int peek() {
      if (pointer <= 0) {
         throw new EmptyIntStackException();
      }
      return stack[pointer - 1];
   }

   public int indexOf(int x) {
      for (int i = pointer - 1; i >= 0; i--) {
         if (stack[i] == x) {
            return i;
         }
      }
      return -1;
   }

   public void clear() {
      pointer = 0;
   }

   public int capacity() {
      return max;
   }

   public int size() {
      return pointer;
   }

   public boolean isEmpty() {
      return pointer <= 0;
   }

   public boolean isFull(){
      return pointer>=max;
   }

   public void dump(){
      if (pointer<=0){
         System.out.println("스택이 비어 있습니다.");
         return;
      }
      for (int i =0; i< pointer;i++){
         System.out.println(stack[i]);
      }
   }

}

 


public class IntStackMain {

   public static void main(String[] args) {
      IntStack stack = new IntStack(5);

      // 스택에 값 추가
      stack.push(10);
      stack.push(20);
      stack.push(30);
      stack.push(40);
      stack.push(50);

      // 스택 정보 출력
      System.out.println("스택 크기: " + stack.size());
      System.out.println("스택이 비어있는가? " + stack.isEmpty());
      System.out.println("스택이 가득차있는가? " + stack.isFull());

      // 스택에서 값 가져오기
      int poppedValue = stack.pop();
      System.out.println("꺼낸 값: " + poppedValue);

      // 스택의 가장 위에 있는 값 확인
      int topValue = stack.peek();
      System.out.println("가장 위의 값: " + topValue);

      // 스택에서 값의 인덱스 확인
      int valueToFind = 30;
      int index = stack.indexOf(valueToFind);
      System.out.println(valueToFind + "의 인덱스: " + index);

      // 스택 초기화
      stack.clear();

      // 스택 정보 출력
      System.out.println("스택 크기: " + stack.size());
      System.out.println("스택이 비어있는가? " + stack.isEmpty());
      System.out.println("스택이 가득차있는가? " + stack.isFull());
   }
}

 

 

실행 화면 

 

반응형