04_Stack, Que

charl hi·2022년 6월 20일
0

자바의정석2

목록 보기
4/13

링크텍스트

Stack 예제

Ex10_2

package ch11;

import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;

public class Ex10_2 {

	public static void main(String[] args) {
		Stack st = new Stack();
		Queue q = new LinkedList();	
		//Queue는 인터페이스이기 때문에 직접 객체 생성 못함
//		-> Queue를 구현한 LinkedList 사용
		
		st.push("0");
		st.push("1");
		st.push("2");
		System.out.println(st);
		
		q.offer("0");
		q.offer("1");
		q.offer("2");
		
//		LI(마지막에 저장한 데이터)가 1이 된다!! 1부터 시작!!
		System.out.println("st.search(\"0\") :: "+st.search("0"));	//3
		System.out.println("st.search(\"1\") :: "+st.search("1"));	//2
		System.out.println("st.search(\"2\") :: "+st.search("2"));	//1
		
		System.out.println("= Stack =");
		while(!st.empty()) {
			System.out.println(st.peek());
			System.out.println(st.pop());
		}
		
		System.out.println("= Queue =");
		while(!q.isEmpty()) {
			System.out.println(q.poll());
			System.out.println(q.peek());	//예외 발생 X, null 반환
		}

	}

}

->

3
2
1
= Stack =
2
2
1
1
0
0
= Queue =
0
1
1
2
2
null


✨뒤로/앞으로 버튼 : StackEx1

import java.util.Stack;

public class StackEx1 {

	public static Stack back = new Stack();
	public static Stack forward = new Stack();
	
	public static void main(String[] args) {
		goURL("1. 구글");
		goURL("2. 야후");
		goURL("3. 네이버");
		goURL("4. 다음");
		
		printStatus();
		
		goBack();
		System.out.println("== '뒤로' 버튼을 누른 후 ==");
		printStatus();
		
		goForward();
		System.out.println("== '앞으로' 버튼을 누른 후 ==");
		printStatus();
		
		goURL("codechobo.com");
		System.out.println("== 새로운 주소로 이동 후 ==");
		printStatus();

	}

	public static void printStatus() {
		System.out.println("back:: "+back);
		System.out.println("forward:: "+forward);
		System.out.println("현재화면은 '"+back.peek()+"'입니다.");
		System.out.println();
	}
	
	public static void goURL(String url) {
		back.push(url);
		if(!forward.empty())
			forward.clear();	//새로운 주소로 이동하니까, forward에 데이터가 없어야 함!!
	}
	
	public static void goForward() {
		if(!forward.empty())
			back.push(forward.pop());
	}
	
	public static void goBack() {
		if(!back.empty())
			forward.push(back.pop());
	}
}

->

back:: [1. 구글, 2. 야후, 3. 네이버, 4. 다음]
forward:: []
현재화면은 '4. 다음'입니다.

== '뒤로' 버튼을 누른 후 ==
back:: [1. 구글, 2. 야후, 3. 네이버]
forward:: [4. 다음]
현재화면은 '3. 네이버'입니다.

== '앞으로' 버튼을 누른 후 ==
back:: [1. 구글, 2. 야후, 3. 네이버, 4. 다음]
forward:: []
현재화면은 '4. 다음'입니다.

== 새로운 주소로 이동 후 ==
back:: [1. 구글, 2. 야후, 3. 네이버, 4. 다음, codechobo.com]
forward:: []
현재화면은 'codechobo.com'입니다.


✨괄호 검사

링크텍스트




Queue 예제

✨최근 5개 명령어 저장하기

링크텍스트

0개의 댓글