본문 바로가기

java

java - 스택 큐 (pop , push) 상속 ,추상 클래스

스택은 삽입 삭제가 일어날 때 먼저 삽입된 게 제일 마지막에 삭제된다.

 

큐는 삽입 먼저 삽입된게 먼저 삭제된다.

 

 

추상 클래스

 

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