본문 바로가기
Programming/Java

push, pop

by 공부합시다홍아 2020. 10. 20.

코드

1  public class P{
2  	  static int Stack[] new int[5];
3     static int Top = -1;
    
4     public static void main(String[] args){
5           push(100);
6           push(110);
7           push(120);
8           pop();
9           push(130);
10          push(140);
11          pop();
12    }
13    static void push(int i){
14          Top++;
15          if(Top >= 5)
16           	System.out.printf("overflow");
17          else
18           	Stack[Top] = i;
19    }
    
20    static void pop(){
21      	if(Top < 0)
22           	System.out.printf("underflow");
23          else
24          	System.out.printf("%d제거\n", Stack[Top--]);
25     }
26 }

결과

120 제거

140 제거

설명

2열 : 5개의 요소를 갖는 정수형 배열 Stack 선언

3열 : 전역 변수 Top를 선언하면서 초기값으로 -1을 할당

※ 전역 변수는 클래스 안에서는 어디서든 사용가능하며 저장된 값이 그대로 유지된다.

5열 : 100을 인수로 하여 push()메소드를 호출한다. 

13열 : push메소드의 시작점이다. 

14열 : Top의 값을 1증가시킨다.

15열 : Top이 5보다 크거나 같지 않으므로 18열로 이동시킨다. 

stack : 100       Top : 0

이렇게 push메소드 [ 100,110,120 ]을 반복수행한다.

100  110 120   Top : 2

 

8열 : pop 메소드를 호출한다. 제어를 20열에서 진행한다.

21열 : Top이 0보다 작지 않으므로 24열로 이동한다.

24열 : Top--는 후치연산자이기 때문에 Stack[2]의 값을 출력한 이후 1 감소한다. 

          - 출력을 했다고 없어지는 것이 아닌 Top의 위치가 1이 되었기 때문에 push를 하면 Stack[2]에 값이 저장되므로              자연스럽게 없어진다.

 

계속 진행하면 120제거, 140제거라는 결과값을 얻을 수 있다. 

728x90

'Programming > Java' 카테고리의 다른 글

선택 정렬 알고리즘  (0) 2020.10.20
1~100범위 안에 가장 큰 소수 구하기  (0) 2020.10.20
외부클래스  (0) 2020.10.20
실행 클래스 내부에 메소드 정의  (0) 2020.10.20
거꾸로 출력하기  (0) 2020.10.19