1. Queue (큐) : 선입 선출

i.e. 계산기 알고리즘??

 

 

2. Stack (스택) : 선입 후출

 

 

큐와 스택은 넣을 때도 하나씩, 꺼내올 때도 하나씩 해야한다.

 

 

public class ExecClass {
	public static void main(String[] args) {
		// 4. Queue
		QueueTest queueTest = new QueueTest();
		queueTest.doAction();
		
		// 5. Stack
		StackTest stackTest = new StackTest();
		stackTest.doAction();	
	}
}

 

import java.util.Collection;
import java.util.Iterator;
import java.util.Queue;

public class QueueTest {
	public void doAction() {
		
		// Queue (선입 선출)			데이터 넣기->(Stack)			(Stack)->데이터 꺼내기
		Queue<Integer> qq = new Queue<Integer>() {	// Queue는 Abstract 메소드라 미구현 메소드를 모두
			
		// Override 중략

결과 :

		qq.add(10);
		qq.add(20);
		qq.add(30);
		qq.add(40);
		System.out.println(qq);
		System.out.println(qq.peek());		// 가장 앞의 10을 조회만 한다. Queue에는 (40, 30, 20, 10)->(넣는 방향) 이 들어있음.
		System.out.println(qq.poll());		// 가장 앞의 10을 꺼낸다. Queue에는 (40, 30, 20)->(넣는 방향) 이 들어있음.
		System.out.println(qq.poll());		// 그 다음 가장 앞의 20을 꺼낸다. Queue에는 (40, 30)->(넣는 방향) 이 들어있음.
		
	}

}
import java.util.Stack;

public class StackTest {
	public void doAction() {

//		// Stack (선입 후출)			데이터 넣기->(Stack)			데이터 꺼내기<-(Stack)
		Stack<Integer> st = new Stack();
		st.add(10);
		st.add(20);
		st.add(30);
		st.add(40);
		System.out.println(st);
		System.out.println("st.peek() : " + st.peek());		// 가장 뒤의 40을 조회만 한다. Stack에는 (40, 30, 20, 10)->(넣는 방향) 이 들어있음.
		System.out.println(st + "   <- st.peek()");
		System.out.println("st.pop() : " + st.pop());		// 가장 뒤의 40을 꺼낸다. Stack에는 (30, 20, 10)->(넣는 방향) 이 들어있음.
		System.out.println(st + "   <- st.pop()");
		System.out.println("st.pop() : " + st.pop());		// 그 다음 가장 앞의 30을 꺼낸다.  Stack에는 (20, 10)->(넣는 방향) 이 들어있음.
		System.out.println(st + "   <- st.pop()");
	}

}


결과 :

[10, 20, 30, 40]
st.peek() : 40
[10, 20, 30, 40]   <- st.peek()
st.pop() : 40
[10, 20, 30]   <- st.pop()
st.pop() : 30
[10, 20]   <- st.pop()

 

 

+ Recent posts