배열로 Stack 구현하기

2020-04-26

간단하지만 핵심개념이라 할 수 있는 배열로 Stack 구현하기에 대해서 설명합니다.


출처

스택(Stack)는 LIFO(Last In First Out)으로 가장 최근에 스택에 추가한 항목이 가장 먼저 제거하는 자료구조입니다.

스택(Stack)은 연결리스트와 배열로 구현할 수 있으며 오늘은 배열로 구현합니다.

구현한 기능 :

  1. push = 입력

  2. pop = 빼내기

  3. size = 크기

  4. empty : 비어있는가?

  5. 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]);	
		}
	}
}