ㅁ. 메모리(RAM) 는 3가지 영역으로 나뉘어서 쓴다.
1. data
2. stack ; FILO LIFO (First In Last Out) (Last In First Out)
3. heap ; 객체생성하면 만들어짐.
이중에서
스택구조 형식에 대한 프로그래밍 하는 방법임.
00. 먼저 구조를 생각한다.
스택의 이름을 stack배열로 해서 만들고 top이 몇번째 배열에 와 있는지 보기위해 int값으로 top을 변수로 선언한다.
01. FILO 의 법칙을 만족시켜주기 위해서 top = -1에서 부터 시작한다.(0부터 stock되기 시작하므로)
또한, 프로그램을 작동 시켰을때, 사용자가 입력해서 작동하도록 하기위해 Scanner 객체를 만든다.
또한, 사용자가 입력한것들을 사용되기위해 각각의 메소드를 집어넣는다.
02. 결과 값이다. 제대로 작동하고 있음을 확인할 수 있다.
※ dump 와 print의 차이?
예, 하나의 특정값을 출력해라-> 프린트
모든 값을 출력해라-> 덤프
※. 코드
import java.util.Scanner;
class Stack { // [1]push [2]pop [3]dump [4]exit 로 만들것임.
private int[] stack; // int타입의 배열의 이름을 stack으로
private int top; // int 타입의 top변수 선언
public Stack(int size)
{
stack = new int[size]; // int[] lotto = new int[6]; 로 만들어 주고 싶음.
top = -1; // top이 -1이면 비어있는 값. 왜냐하면 하나라도 있으면 top이 배열이 0번째로 시작되기 때문이다.
System.out.println("Stack is created");
}// 생성자 Stack
public boolean isFull()
{
if (top == stack.length -1)
{
return true;
}else
{
return false;
}
}// isFull
public void printMenu()
{
System.out.println(" [1]Push [2]Pop [3]Dump [4]Exit ");
}
public void push(int value)
{
stack[++top] = value; //top++; stack[top] = value;
System.out.println(value + " is pushed");
}
public void pop()
{
if(top == -1)
{
System.out.println(" Stack is Empty. ! ! ! ");
return; //else 대신 리턴을 쓰고 밑에 코드로 넘어간다.
}
System.out.println(stack[top--] + " is popped"); // System.out.println(stack[top] + " is popped"); pop--;
}// pop
public void dump()
{
int i;
for (i = top ; i >=0 ; i--)
{
System.out.println(stack[i]);
}// for
}// dump
}// Stack Class
public class Test {
public static void main(String[] args) {
Stack s = new Stack(5);
Scanner scan = new Scanner(System.in);
int cmd;
while(true)
{
s.printMenu();
cmd = scan.nextInt(); //사용자로부터 값을 입력받아 cmd변수에 초기화.
if(cmd == 1)
{ //push
// 넣기전에 full 검사
if(s.isFull() == true)
{
System.out.println("Stack is Full");
}else
{
int input;
System.out.println(" Insert Push Value ");
input = scan.nextInt();
s.push(input);
}
}else if(cmd ==2)
{ //pop
s.pop();
}else if (cmd == 3)
{ //dump
s.dump();
}else if (cmd == 4)
{
break;
}
}// while
scan.close();
}// main
}// Main Class