JAVA/Theory

[Java] Stack๊ณผ Queue ๊ทธ๋ฆฌ๊ณ  Deque

ITs Min 2024. 4. 25.

๐Ÿ” Stack

Stack์€ ํ›„์ž…์„ ์ถœ(LIFO: Last In First Out) ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์Œ“์•„์˜ฌ๋ฆฌ๋Š” ํ˜•ํƒœ์ด๋ฉฐ, ๋‹จ๋ฐฉํ–ฅ ์ž…์ถœ๋ ฅ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„๋‹ค. ์Šคํƒ์€ ์‹œ์Šคํ…œ ํ•ดํ‚น, ๊ทธ๋ž˜ํ”„์˜ ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(DFS) ๋“ฑ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ํ™œ์šฉ๋œ๋‹ค.

// ์Šคํƒ ์„ ์–ธ
Stack<Integer> stack = new Stack<>();

// ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€
stack.push(1);
stack.push(2);
stack.push(3);

// ๋ฐ์ดํ„ฐ ๊บผ๋‚ด๊ธฐ
int top = stack.pop(); // 3
top = stack.pop(); // 2
top = stack.pop(); // 1

// ์Šคํƒ ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธ
boolean isEmpty = stack.empty(); // true

๐Ÿ” Queue

Queue๋Š” ๋จผ์ € ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ๋‚˜๊ฐ€๋Š” FIFO(First In First Out) ๊ตฌ์กฐ์˜ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ์Œ“์•„๋‘๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋ฉฐ, BFS(Breadth-First Search) ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‚˜ ์ปดํ“จํ„ฐ ๋ฒ„ํผ์—์„œ ํ™œ์šฉ๋œ๋‹ค.

// ํ ์„ ์–ธ
Queue<Integer> queue = new LinkedList<>();

// ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€
queue.offer(1);
queue.offer(2);
queue.offer(3);

// ๋ฐ์ดํ„ฐ ๊บผ๋‚ด๊ธฐ
int front = queue.poll(); // 1
front = queue.poll(); // 2 
front = queue.poll(); // 3

// ํ ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธ
boolean isEmpty = queue.isEmpty(); // true

๐Ÿ” Deque

Deque(๋ฑ ๋˜๋Š” ๋ฐํฌ)๋Š” Double-Ended Queue์˜ ์ค„์ž„๋ง๋กœ, ํ์˜ ์–‘์ชฝ์œผ๋กœ ๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. LIFO๋‚˜ FIFO ์ˆœ์„œ๋ฅผ ๋”ฐ๋ฅด์ง€ ์•Š์œผ๋ฉฐ, ์–‘์ชฝ ๋์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ๋ฐ์ดํ„ฐ ์ ‘๊ทผ๊ณผ ์กฐ์ž‘์ด ์šฉ์ดํ•˜๋‹ค.

// ๋ฑ ์„ ์–ธ
Deque<Integer> deque = new LinkedList<>();

// ์•ž์ชฝ์— ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€
deque.offerFirst(1);
deque.offerFirst(2);

// ๋’ค์ชฝ์— ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ 
deque.offerLast(3);
deque.offerLast(4);

// ์•ž์ชฝ์—์„œ ๋ฐ์ดํ„ฐ ๊บผ๋‚ด๊ธฐ
int first = deque.pollFirst(); // 2
first = deque.pollFirst(); // 1

// ๋’ค์ชฝ์—์„œ ๋ฐ์ดํ„ฐ ๊บผ๋‚ด๊ธฐ
int last = deque.pollLast(); // 4 
last = deque.pollLast(); // 3

๐Ÿ’ก ๊ทธ๋ฆผ


 

'JAVA > Theory' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Java] Deque์™€ LinkedList  (0) 2024.04.26
[Java] HashMap๊ณผ HashSet  (1) 2024.04.25
[MAVEN] SpringMVC ๋ฒ„์ „ 2  (0) 2024.03.05
[MAVEN] SpringMVC ๋ฒ„์ „ 1  (0) 2024.03.05
[Spring] ์˜์กด ์ฃผ์ž…์„ ์œ„ํ•œ ์–ด๋…ธํ…Œ์ด์…˜  (1) 2024.03.04

๋Œ“๊ธ€

TOP

๋Šฆ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•  ๋• ๋„ˆ๋ฌด ๋Šฆ์€ ๊ฑฐ๋‹ค.