๐ฏ ๋ชฉํ : ์คํ๊ณผ ํ์ ์๋ฃ๊ตฌ์กฐ์ ๋ํ ๊ฐ๋
์ดํดย
๐ Stack & Queue

๐ Stack
- LIFO ๊ตฌ์กฐ, ๋ง์ง๋ง์ ์ ์ฅ๋ ๊ฒ์ ์ ์ผ ๋จผ์ ๊บผ๋ผ์ ์๋ค.
- ex) ์์ ๊ณ์ฐ, undo/redo, ๋ค๋ก/์์ผ๋ก ์ด๋(์น)
- Stack์ ํด๋์ค๋ค.
๐ Queue
- FIFO ๊ตฌ์กฐ, ์ ์ผ ๋จผ์ ์ ์ฅํ ๊ฒ์ ์ ์ผ ๋จผ์ ๊บผ๋ผ์ ์๋ค.
- ex)ย ์ต๊ทผ ์ฌ์ฉ๋ฌธ์, ์ธ์ ์์
๋๊ธฐ๋ชฉ๋ก, ๋ฒํผ(Buffer)
- Queue๋ ์ธํฐํ์ด์ค๋ค.
๐ ์์
import java.util.*;
class StackQueue {
public static void main(String[] args) {
Stack st = new Stack();
Queue q = new LinkedList();
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์ Input๋ ์ญ์์ผ๋ก ์ถ๋ ฅ๋๋ค.
- Queue๋ Input๋ ์์๋๋ก ์ถ๋ ฅ๋๋ค.
- Stack์ ๋ฉ์๋
boolean empty() ๋น์ด์๋์ง ์๋ ค์ค
Object peek() ๋งจ์ ์ ์ฅ๋ ๊ฐ์ฒด๋ฅผ ๋ฐํ ๊ฐ์ฒด๋ฅผ ๊บผ๋ด์ง์๊ณ ๊ฐ๋ง ๋ฐํ, ๋น์์์ EmptyStackException๋ฐ์
Object pop() ๋งจ์ ์ ์ฅ๋ ๊ฐ์ฒด๋ฅผ ๊บผ๋ธ๋ค. ๋น์์์ EmptyStackException๋ฐ์
Object push(Object item) Stack์ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๋ค.
int search(Object o) Stack์์ ๊ฐ์ฒด o๋ฅผ ์ฐพ์์ ์์น๋ฅผ ๋ฐํํ๋ค. ์์ผ๋ฉด -1๋ฐํ, Stack์ ์ธ๋ฑ์ค ์์น ๊ฐ์ 0์ด ์๋ 1๋ถํฐ ์์
- Queue์ ๋ฉ์๋
boolean offer(Object o) Queue์ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๊ณ ์ฑ๊ณตํ๋ฉด true ์คํจํ๋ฉด false ๋ฐํ.
Object poll() Queue์์ ๊ฐ์ฒด๋ฅผ ๊บผ๋ด์ ๋ฐํํ๋ค. ๋น์ด์์ผ๋ฉด null์ ๋ฐํํ๊ณ ์์ธ๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
Object peek() ์ญ์ ์์ด ์ ์ผ ์๋ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค. Queue๊ฐ ๋น์ด์์ผ๋ฉด null์ ๋ฐํํ๊ณ ์์ธ๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
add์ remove๋ ๋น์ด์์์ ๊ฐ๊ฐ illegalStateException๊ณผ NoSuchElementException ๋ฐ์
Queue๋ ์ธํฐํ์ด์ค๋ก ๊ตฌํํ ํด๋์ค์ค ๋ง์ด ์ฐ์ด๋ ํด๋์ค๋ก๋ LinkedList๊ฐ ์๋ค.