스택 : 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)
*괄호가 일치합니다.
*/
'Programing > java' 카테고리의 다른 글
Java 자바 메모리 구조 (0) | 2022.02.14 |
---|---|
Java JVM과 JDK 이해하기 (0) | 2022.02.10 |
메서드 Math.pow() ,Math.sqrt()로 두 점의 거리 구하기 (0) | 2022.01.10 |
#Java 문자열 다루기 (0) | 2021.09.10 |
#Java 문자열의 표현-Character and string (0) | 2021.09.10 |