스택은 삽입 삭제가 일어날 때 먼저 삽입된 게 제일 마지막에 삭제된다.
큐는 삽입 먼저 삽입된게 먼저 삭제된다.
추상 클래스
package Study1;
public abstract class MyMemory {
public static int[] num;
protected int i;
protected int cnt;
protected MyMemory() {
num = new int[4];
cnt = 0;
}
public void push(int num) {
this.num[cnt++] = num;
}
public abstract int pop();
}
stack
package Study1;
import java.util.Scanner;
/*
* stack : FILO
*
* push(3); // 3데이터 입력
*
* push(5); //3 다음에 5를 입력 3, 5
*
* int a = ms.pop(); //데이터를 꺼내오는 메소드 5 > 3
*/
public class MyStack extends MyMemory{
private int i;
@Override
public int pop() {
return num[--cnt];
}
}
큐
package Study1;
/*
* Queue : FIFO
*
* push(10);
* push(5); // 10, 5
*
*
* pop() // 10 이나온다.
*/
public class MyQueue extends MyMemory {
private int i;
@Override
public int pop() {
int result = num[0];
for(int i=0; i<cnt-1; i++)
{
num[i] = num[i+1];
}
cnt--;
return result;
}
}
Main
package Study1;
import java.util.Scanner;
public class MainExam {
public static void main(String[] args) {
// 1.stack 2.queue
// 1. push(data) 2.pop
Scanner sc =new Scanner(System.in);
String str;
// MyStack mystack = new MyStack();
// MyQueue myqueue = new MyQueue();
// mystack.push(); //정적 바인딩
// mystack.pop(); //
//
// myqueue.push(); //
// myqueue.pop(); //
System.out.println("=======================================");
MyMemory mymemory;
// mymemory = mystack; //동적 바인딩
// mymemory.push();
// mymemory.pop();
//
// mymemory = myqueue; //동적 바인딩
// mymemory.push();
// mymemory.pop();
MyStack mystack = new MyStack();
MyQueue myqueue = new MyQueue();
int select = 0;
while(true) {
System.out.println("1. stack 2. queue");
select = sc.nextInt();
if(select ==0) {
break;
}else if(select == 1) {
mymemory = mystack;
}else if(select == 2) {
mymemory = myqueue;
}else
continue;
while(true) {
System.out.println("1.push , 2.pop ,3.종료");
select = sc.nextInt();
if( select == 1) {
mymemory.push(sc.nextInt());
}else if(select == 2) {
System.out.println("빠져 나온 수"+mymemory.pop());
}else if(select == 3) {
break;
}
}
}
}
}
'java' 카테고리의 다른 글
JSP 세션 ID 와 세션 유지시간 을 출력해보자! (0) | 2020.08.27 |
---|---|
java - HashSet 이용한 성적관리 프로그램 (0) | 2020.08.15 |
java -급여 관리 프로그램 (0) | 2020.08.10 |
java - 성적 입력 class 사용(has a) (0) | 2020.08.08 |
java -성적 입출력 배열 담기 (0) | 2020.08.06 |