메서드
메서드
public static void main(String[] args) {
Stack st = new Stack();
Queue q = new LinkedList(); // Queue인터페이스의 상속을 받은 클래스
st.push("0"); // 스택 값 추가
st.push("1");
st.push("2");
q.offer("0"); // 큐 값 추가
q.offer("1");
q.offer("2");
System.out.println("= Stack =");
while(!st.empty()){
System.out.println(st.pop()); // 스택 값 출력
}
System.out.println("= Queue = ");
while(!q.isEmpty()){
System.out.println(q.poll()); // 큐 값 출력
}
}
---- 결과 ----
= Stack =
2
1
0
= Queue =
0
1
2
활용범위
활용 | |
---|---|
스택(Stack) | 수식계산, 수식괄호검사, 웹브라우저 뒤로/앞으로 즉, 이전 실행값을 호출할 때 사용 |
큐(Queue) | 최근사용문서, 인쇄작업 대기목록, 버퍼 즉, 최근 작업문서의 리스트 처럼 최근 값 리스트 구할 때 사용 |
public static void main(String[] args) {
Stack st = new Stack();
String expression = "((3+5)*8-2";
System.out.println("expression: "+expression);
try{
for(int i=0; i<expression.length(); i++){
char ch = expression.charAt(i); // 입력받은 문자열을 한글자씩 꺼냄
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("괄호가 일치하지 않습니다.");
}
}
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class queue {
static Queue q = new LinkedList();
static final int MAX_SIZE = 5;
public static void main(String[] args) {
System.out.println("help를 입력하면 도움말을 볼 수 있다.");
while(true){
System.out.println(">>");
try{
Scanner s = new Scanner(System.in);
String input = s.nextLine().trim(); // trim() 문자열 공백 제거
if("".equals(input))
continue;
if(input.equalsIgnoreCase("q")){ // equalsIgnoreCase() 대소문자 구분 안함
System.exit(0);
}else if(input.equalsIgnoreCase("help")){
System.out.println("help - 도움말을 보여줍니다.");
System.out.println("q 또는 Q - 프로그램을 종료합니다");
System.out.println("history - 최근에 입력한 명령어를"+MAX_SIZE+"개 보여줍니다.");
}else if(input.equalsIgnoreCase("history")){
save(input);
LinkedList list = (LinkedList)q;
for(int i =0; i<list.size(); i++){
System.out.println((i+1)+"."+list.get(i));
}
}else{
save(input);
System.out.println(input);
}
}catch (Exception e){
System.out.println("입력오류 입니다.");
}
}
}
public static void save(String input){
if(!"".equals(input)) // 공백이 아니라면
q.offer(input); // 큐에 추가한다
if(q.size()>MAX_SIZE) // 큐의 크기가 5초과할경우
q.remove(); // 큐의 제일 먼저 들어온 값 제거한다
}
}
출처 : 자바의 정석