728x90

 

★ 스택
  => Stack st = new Stack(); :: 배열 적합
  => 수식계산, 수식괄호검사 , 워드프로세서 undo/redo , 웹브라우저 앞/뒤로
  
 ★ 큐(인터페이스)
  => Queue q = new LinkedList(); :: Fifo :: 링크드리스트 적합
  => 최근 사용문서, 인쇄작업 대기목록 , 버퍼
 
스택 메서드 / 큐 메서드 + 비었는지 확인 isEmpty()

 

import java.util.*;
class Ex11_4 {
	static Queue q = new LinkedList();
	static final int MAX_SIZE = 5;	// Queue에 최대 5개까지만 저장되도록 한다.

	public static void main(String[] args) {
		System.out.println("help를 입력하면 도움말을 볼 수 있습니다.");

		while(true) {
			System.out.print(">>");
			try {
				// 화면으로부터 라인단위로 입력받는다.
				Scanner s = new Scanner(System.in);  
				String input = s.nextLine().trim();

				if("".equals(input)) continue;

				if(input.equalsIgnoreCase("q")) {
					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")) {
					int i=0;
					// 입력받은 명령어를 저장하고,
					save(input);    

					// LinkedList의 내용을 보여준다.
					LinkedList list = (LinkedList)q;
					final int SIZE = list.size();
					for (int j = 0; j < SIZE; j++) 
						System.out.println((i+1) + "."+ list.get(i));
				} else {
					save(input);    
					System.out.println(input);
				} // if(input.equalsIgnoreCase("q")) {
			} catch(Exception e) {
				System.out.println("입력오류입니다.");
			}
		} // while(true)
	} //  main()
	
	public static void save(String input) {
		// queue에 저장한다.
		if(!"".equals(input))
          q.offer(input);

		// queue의 최대크기를 넘으면 제일 처음 입력된 것을 삭제한다.
		if(q.size() > MAX_SIZE)  // size()는 Collection인터페이스에 정의
			q.remove();
	}
} // end of class
 
 

 

728x90

+ Recent posts