λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
🏦 Data Structure

[자료ꡬ쑰] 큐(Queue) (Java)

by hyeon-z 2023. 3. 9.

 

νλž€? μ‰½κ²Œ 보면 λŒ€κΈ°μ€„μ΄λ‹€

μš°λ¦¬κ°€ ν”νžˆ 쀄을 μ„€ λ•Œ 온 μˆœμ„œλŒ€λ‘œ μ°¨λ‘€λ‘œ μž…μž₯ν•œλ‹€.

λ¨Όμ € λ“€μ–΄κ°„ 것이 λ¨Όμ € λ‚˜μ˜¨λ‹€.

=> μ„ μž…μ„ μΆœ(FIFO)

 

 

큐의 μ•žλΆ€λΆ„ frontμ—μ„œλŠ” μ‚­μ œ μ—°μ‚°λ§Œ μˆ˜ν–‰ν•˜κ³ 

큐의 λ’·λΆ€λΆ„ rearμ—μ„œλŠ” μ‚½μž… μ—°μ‚°λ§Œ μˆ˜ν–‰ν•œλ‹€.

 

μ°¨κ·Όμ°¨κ·Ό 큐에 μŒ“μ•„λ³΄κΈ°

μ‚½μž…(5) - μ‚½μž…(2) - μ‚½μž…(3) - μ‚½μž…(7) - μ‚­μ œ() - μ‚½μž…(1) - μ‚½μž…(4) - μ‚­μ œ()의 κ³Όμ •을 μˆ˜ν–‰ν•΄ 보자.

 

 

μ‚½μž…(5)

5

 

μ‚½μž…(2)

5 2

 

μ‚½μž…(3)

5 2 3

 

μ‚½μž…(7) 

5 2 3 7

 

μ‚­μ œ() 

2 3 7

 

μ‚½μž…(1)

2 3 7 1

 

μ‚½μž…(4)

 2 3 7 1 4 

 

μ‚­μ œ() 

3 7 1 4

=> μ‚½μž…μ„ 톡해 데이터λ₯Ό μ°¨λ‘€λŒ€λ‘œ μŒ“κ³  μ‚­μ œλ₯Ό 톡해 λ“€μ–΄μ˜¨ μˆœμ„œλŒ€λ‘œ 데이터λ₯Ό 내보낸닀.

 

μ½”λ“œλ‘œ κ΅¬ν˜„

 

Queue<Integer> q = new LinkedList<>();

// μ‚½μž…(5) - μ‚½μž…(2) - μ‚½μž…(3) - μ‚½μž…(7) - μ‚­μ œ() - μ‚½μž…(1) - μ‚½μž…(4) - μ‚­μ œ()
q.offer(5);
q.offer(2);
q.offer(3);
q.offer(7);
q.poll();
q.offer(1);
q.offer(4);
q.poll();

while (!q.isEmpty()) {
    System.out.print(q.poll() + " ");
}

 

큐와 ν•¨κ»˜ μ“°μ΄λŠ” ν•¨μˆ˜λ“€

 

μ›μ†Œ μΆ”κ°€

- q.add()

boolean add(E e);

 

- q.offer()

boolean offer(E e);

 

<곡톡점>

큐의 맨 뒀에 값을 μΆ”κ°€ν•˜κ³  성곡 μ‹œ trueλ₯Ό λ°˜ν™˜ν•œλ‹€.

 

<차이점>

큐의 μš©λŸ‰ μ œν•œ λ•Œλ¬Έμ— 더 μΆ”κ°€ν•  수 μ—†λŠ” 경우

q.add(): IllegalStateException λ°œμƒ

q.offer(): false λ°˜ν™˜

 

 

μ›μ†Œ μ‚­μ œ

- q.remove()

E remove();

 

- q.poll()

E poll();

 

<곡톡점>

큐의 맨 μ•ž μ›μ†Œλ₯Ό μ‚­μ œν•˜κ³  성곡 μ‹œ ν•΄λ‹Ή 값을 λ°˜ν™˜ν•œλ‹€.

 

<차이점>

큐가 λΉ„μ–΄μžˆλŠ” 경우

q.remove(): NoSuchElementException λ°œμƒ

q.poll(): null λ°˜ν™˜

 

+) 큐 λΉ„μš°κΈ°

- q.clear()

void clear();

 

맨 μ•ž μ›μ†Œ 확인

- q.element()

E element();

 

- q.peek()

E peek();

 

<곡톡점>

큐의 맨 μ•ž μ›μ†Œ 값을 λ°˜ν™˜ν•œλ‹€.

 

<차이점>

큐가 λΉ„μ–΄μžˆλŠ” 경우

q.element(): NoSuchElementException λ°œμƒ

q.peek(): null λ°˜ν™˜

 

πŸ’Ÿμ •λ¦¬

add(), remove(), element()와 offer(). poll(), peek()의 μ°¨μ΄λŠ”

문제 μƒν™©μ—μ„œ Exception을 λ°œμƒμ‹œν‚€λŠ”μ§€ false ν˜Ήμ€ null을 λ°˜ν™˜μ‹œν‚€λŠ” μ§€μ˜ 차이이닀.

 

Reference

이것이 μ½”λ”© ν…ŒμŠ€νŠΈλ‹€ - λ‚˜λ™λΉˆ

https://cocoon1787.tistory.com/774

'🏦 Data Structure' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[자료ꡬ쑰] μŠ€νƒ(Stack) (Java)  (0) 2023.03.08

λŒ“κΈ€