Queue 2개로 Stack구현하기
import java.util.LinkedList;
import java.util.Queue;
public class Stack<T> {
private Queue<T> q1;
private Queue<T> q2;
public Stack() {
this.q1 = new LinkedList<>();
this.q2 = new LinkedList<>();
}
public void push(T value) {
q1.add(value);
}
public T pop() {
while (q1.size() > 1) {
q2.add(q1.poll());
}
Queue<T> temp = q1;
q1 = q2;
q2 = temp;
return q2.poll();
}
@Override
public String toString() {
return "Stack{" +
"q1=" + q1 +
", q2=" + q2 +
'}';
}
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
stack.push(5);
System.out.println(stack.pop());
System.out.println(stack);
System.out.println(stack.pop());
System.out.println(stack);
}
}
'자료구조 & 알고리즘 관련 > 자료구조&알고리즘' 카테고리의 다른 글
[BOJ 2346] 백준 풍선 터뜨리기 자바 (0) | 2024.07.21 |
---|---|
Stack 두개를 이용하여 Queue구현하기 (0) | 2024.02.03 |
자료구조란? (0) | 2023.12.06 |
링크드리스트 노드의 구현 (0) | 2022.11.28 |
단방향 링크드리스트 구현 (0) | 2022.11.28 |
Queue 2개로 Stack구현하기
import java.util.LinkedList;
import java.util.Queue;
public class Stack<T> {
private Queue<T> q1;
private Queue<T> q2;
public Stack() {
this.q1 = new LinkedList<>();
this.q2 = new LinkedList<>();
}
public void push(T value) {
q1.add(value);
}
public T pop() {
while (q1.size() > 1) {
q2.add(q1.poll());
}
Queue<T> temp = q1;
q1 = q2;
q2 = temp;
return q2.poll();
}
@Override
public String toString() {
return "Stack{" +
"q1=" + q1 +
", q2=" + q2 +
'}';
}
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
stack.push(5);
System.out.println(stack.pop());
System.out.println(stack);
System.out.println(stack.pop());
System.out.println(stack);
}
}
'자료구조 & 알고리즘 관련 > 자료구조&알고리즘' 카테고리의 다른 글
[BOJ 2346] 백준 풍선 터뜨리기 자바 (0) | 2024.07.21 |
---|---|
Stack 두개를 이용하여 Queue구현하기 (0) | 2024.02.03 |
자료구조란? (0) | 2023.12.06 |
링크드리스트 노드의 구현 (0) | 2022.11.28 |
단방향 링크드리스트 구현 (0) | 2022.11.28 |