Sponsored By
















ㅁ. 메모리(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

 

 

 

 

 



Sponsored By















+ Recent posts