code/JAVA
[JAVA] Stack&Queue (추상클래스, 예외처리 포함)
shallot
2017. 4. 20. 14:20
Memory class
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | public abstract class Memory { protected int[] data; protected int top; public Memory() { data = new int[10]; top = 0; } public void push(int num) { if (top == data.length) { System.out.println("FULL!!"); return; } else { data[top++] = num; } } public abstract int pop(); } |
Stack class
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public class Stack extends Memory { @Override public int pop() { if (top == 0) { System.out.println("EMPTY!!!"); return 0; } else { return data[--top]; } } } |
Queue class
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | public class Queue extends Memory { protected int front; public Queue() { front = 0; } @Override public int pop() { if (top == front) { System.out.println("EMPTY!!!"); return 0; } return data[(front++)]; } } |
// 수정 중에 있습니다. Queue가 front가 배열을 넘으면 입력 불가. 좋은 방법 있으심 이야기 해주셔도 됩니다:)
Main class
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int num; int a; Memory mem; Queue que=new Queue(); Stack sta=new Stack(); do { System.out.println("1.stack" + "\t" + "2.queue" + "\t" + "3.Quit"); num=sc.nextInt(); if (num == 1) { mem = sta; } else if(num==2){ mem=que; } else if (num == 3) { continue; } else { System.out.println("Not num"); System.out.println("Bye"); num = 3; continue; } System.out.println("1.push"+ "\t"+ "2.pop"); num=sc.nextInt(); if (num == 1) { System.out.println("Data input : "); a=sc.nextInt(); mem.push(a); }else if (num == 2) { System.out.println(" output Data : " + mem.pop()); } else if (num==3){ System.out.println("Not num " + "\n"+"bye"); num=3; continue; } } while (num != 3); } } |