스택(Stack)이란, 스택활용

스택 : LIFO(Last in First out)구조.

마지막에 저장된 것을 제일 먼저 꺼내게 된다.

저장(Push)  ,  추출(Pop)

 

스택(Stack)활용 예 - 수식계산, 수식괄호 검사, 워드프로세서undo/redo, 웹브라우저 뒤로/ 앞으로

 

예제 실습))

import java.util.*;

public class TTest {
	static String  iq;
	public static void main(String[] args) {
		
		
		Scanner sc = new Scanner(System.in); //괄호식 입력할 스캐너 생성
		
		Stack st = new Stack();  //괄호식이 한지 확인할 스택 생성
		System.out.println("괄호식 입력 : "); //(5+5) 입력
		iq = sc.next(); //iq에 값 저장
		 String expression = iq; //expression에 iq 값 대입
		
		
		System.out.println("expression : " + expression); 
		try {   //try-catch문으로 괄호가 일치하지 않는 경우 예외생성
			//반복문을 이용해서 expression의인덱스 0부터문자 끝까지 반복
			for (int i = 0; i < expression.length(); i++) { 
				char ch = expression.charAt(i);
				
				//if문으로 문자가 괄호와같은지 확인한다
				if (ch =='(') {
					//맞다면 스택에 괄호를 넣준다.
					st.push(ch +"");
					//닫는괄호가나오면 다시 괄호를 꺼내준다.
				}else if (ch == ')') {
					st.pop();
				}
				}
			//그래서 약 스택이 비어있으면 "괄호가 일치한다고 출력"
			if(st.isEmpty()) {
				System.out.println("괄호가 일치합니다.");
			} else {  //스택에 괄호가 남아있으면 
				System.out.println("괄호가 일치하지 않습니다.");
			}
		}catch (EmptyStackException e) {
			System.out.println("괄호가 일치하지 않습니다.");
		}
	}

}

/*
*console
*식 입력 : 
*(5+5)
*expression : (5+5)
*괄호가 일치합니다.
*/