스택과 큐를 추상클래스와 동적바인딩을 사용하여 작성
// push할 값을 담을 메모리
package dynamic;
public abstract class Memory {
protected int[] arr;
protected int cnt;
public Memory() {
arr = new int[5];
cnt = 0;
}
public void push(int a) {
arr[cnt++] = a;
}
// public abstract void empty(); // 빈 배열 체크 구현
public abstract int pop();
}
/// 스택
package dynamic;
public class MyStack extends Memory {
@Override
public int pop() {
return arr[--cnt];
}
public void empty() {
}
}
/// 큐
package dynamic;
public class MyQueue extends Memory{
private int front;
public MyQueue() {
front = 0;
}
@Override
public int pop() {
return arr[front++];
}
public void empty() {
}
}
/// 메인
package dynamic;
import java.util.Scanner;
public class DynamicMain {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
MyStack ms = new MyStack();
MyQueue mq = new MyQueue();
Memory mm = null;
int a;
while(true) {
System.out.println("1. 스택 2. 큐 3. 종료");
a = sc.nextInt();
if(a==1) {mm = ms;}// 스택
else if(a==2) {mm = mq;} // 큐
else {break;}
while(true) {
System.out.print("1. push 2. pop 3. break : ");
a = sc.nextInt();
if(a==1) { // push
System.out.print("push 값 입력 : ");
mm.push(sc.nextInt());
}
else if(a==2) {
System.out.print("pop 값 : ");
System.out.println(mm.pop());
}
else {
break;
}
}
}
}
}
반응형
'자바과정 > Java' 카테고리의 다른 글
Java 실습(어댑터) - 9일차 (0) | 2021.02.17 |
---|---|
Java 기초 - 8일차 (0) | 2021.02.17 |
Java 기초 - 7일차 (0) | 2021.02.15 |
Java 실습(상속클래스) - 6일차 (0) | 2021.02.04 |
Java 실습(한사람 성적처리:과목수 입력) - 5일차 (0) | 2021.02.04 |
댓글