코드
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 |