배열로 Stack 구현하기
2020-04-26
간단하지만 핵심개념이라 할 수 있는 배열로 Stack 구현하기에 대해서 설명합니다.
스택(Stack)는 LIFO(Last In First Out)으로 가장 최근에 스택에 추가한 항목이 가장 먼저 제거하는 자료구조입니다.
스택(Stack)은 연결리스트와 배열로 구현할 수 있으며 오늘은 배열로 구현합니다.
구현한 기능 :
-
push = 입력
-
pop = 빼내기
-
size = 크기
-
empty : 비어있는가?
-
top : 가장 최근에 들어온 값은?
java
import java.util.Scanner;
public class StackA {
static int[] stack;
static int top = -1;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
stack = new int[N];
for (int i = 0; i < N; i++) {
String command = sc.next();
switch(command) {
case "push":
push(sc.nextInt());
break;
case "pop":
pop();
break;
case "size":
size();
break;
case "empty":
empty();
break;
case "top":
top();
break;
default:
break;
}
}
sc.close();
}
public static void push(int num) {
stack[++top]= num;
}
public static void pop() {
if(top==-1) System.out.println("비어있습니다.");
else{
System.out.println(stack[top--]);
}
}
public static void size() {
System.out.println(top+1);
}
public static void empty() {
if(top == -1) {
System.out.println(1);
}else {
System.out.println(0);
}
}
public static void top() {
if(top == -1) {
System.out.println(-1);
}else {
System.out.println(stack[top]);
}
}
}