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);
    }
}