์๋ฃ(๋ฐ์ดํฐ)๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ์ ๋ฆฌํ์ฌ ์ ์ฅํ๊ณ ํ์ฉํ๋ ๊ตฌ์กฐ ๊ทธ ์์ฒด
๊ตฌํ ๋ฐฉ์์๋ ์ ํ X
Stack, Queue, Tree, Graph ์ ๋ค๊ฐ์ง ๊ตฌ์กฐ
Java์์๋ Stack์ Stackย ํด๋์ค๋ก ๊ตฌํํ์ฌ ์ ๊ณต
But, Queue๋ Queueย ์ธํฐํ์ด์ค๋ง ์๊ณ ๋ณ๋์ ํด๋์ค๊ฐ ์์ โ Queueย ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค ์ฌ์ฉ
๋ฐ์ดํฐ(data)๋ฅผ ์์๋๋ก ์๋ ์๋ฃ๊ตฌ์กฐ Ex.ํ๋ง๊ธ์ค
Stack์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋ ๊ฒ์ 'PUSH', ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด๋ ๊ฒ์ 'POP'
Ex. ๋ํ์ ์ผ๋ก ๋ธ๋ผ์ฐ์ ์ ๋ค๋ก ๊ฐ๊ธฐ, ์์ผ๋ก ๊ฐ๊ธฐ ๊ธฐ๋ฅ์ ๊ตฌํํ ๋ ์ฌ์ฉ๋จ
- ์๋ก์ด ํ์ด์ง๋ก ์ ์ํ๋ฉด โ ํ์ฌ ํ์ด์ง Prev Stack์ ๋ณด๊ด
- ์ด์ ํ์ด์ง๋ก ๋์๊ฐ ๋ โ ํ์ฌ ํ์ด์ง๋ฅผ Next Stack์ ๋ณด๊ด / Prev Stack์ ๊ฐ์ฅ ๋์ค์ ๋ณด๊ด๋ ํ์ด์ง(ํ์ฌ ํ์ด์ง์ ์ ์ ์์ธ ํ์ด์ง)๋ฅผ ํ์ฌ ํ์ด์ง๋ก ๊ฐ์ ธ์ด
- ๋ค์ ์์ ๋ฐฉ๋ฌธํ ํ์ด์ง๋ก ์ด๋ํ ๋ โ Next Stack์ ๊ฐ์ฅ ๋ง์ง๋ง์ผ๋ก ๋ณด๊ด๋ ํ์ด์ง๋ฅผ ๊ฐ์ ธ์ด
- ๋ง์ง๋ง์ผ๋ก ํ์ฌ ํ์ด์ง๋ฅผ Prev Stack์ ๋ณด๊ด
LIFO (Last In First Out)
๋ฐ์ดํฐ๋ ํ๋์ฉ๋ง ๋ฃ๊ณ ๋บ ์ ์์
ํ๋์ ์ ์ถ๋ ฅ ๋ฐฉํฅ (์ ํ์ ์ ๊ทผ)
( ๋จผ์ ํด๋์ค์ ๋ฉ์๋ ๋ง๋ค๊ณ ๋ฉ์ธ์์ ์ฌ์ฉํด์ผํจ )
push()
- ์คํ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ
pop()
- ๋ง์ง๋ง์ผ๋ก ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์คํ์์ ๊บผ๋(์ญ์ )
(๋น์ด์์ผ๋ฉด EmptyStackExceptionย ๋ฐ์)
peek()
- ์คํ์ ๊ฐ์ฅ ๋์ค์ ์ถ๊ฐ๋ ๋ฐ์ดํฐ ๋ฐํ
size()
- ์คํ์ ํฌ๊ธฐ ๋ฐํ
show()
- ํ์ฌ ์คํ์ ํฌํจ๋์ด ์๋ ๋ชจ๋ ๋ฐ์ดํฐ ๋ฐํ(๊ทธ๋ฅ ์ฝ์ด์ด)
clear()
- ์คํ์ ๋ชจ๋ ๋ฐ์ดํฐ ์ญ์
empty()
- ์คํ์ด ๋น์ด์๋์ง boolean ํ์
์ผ๋ก ๋ฐํ
search(data)
- ์คํ์์ data๋ฅผ ์ฐพ์ ๊ทธ ์์น๋ฅผ int ํ์
์ผ๋ก ๋ฐํ
(๋ชป์ฐพ์ผ๋ฉด -1 ๋ฐํ)
(๋ฐฐ์ด๊ณผ ๋ฌ๋ฆฌ ์์น(์ธ๋ฑ์ค)๊ฐ 1๋ถํฐ ์์)
๐ก
push()
์add()
์ฐจ์ด
push()
- stack์์ ์ ๊ณต
- ๋ฆฌํด๊ฐ์ด < E >
โ add()
- List์์ ์ ๊ณต
- ๋ฆฌํด๊ฐ์ด boolean
Stack๊ณผ ๋ฐ๋๋๋ ๊ฐ๋
๋ค์ด๊ฐ ์์ผ๋ก ์ฐจ๋ก๋ก ๋์ด Ex.ํจ๊ฒ์ดํธ
Queue์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋ ๊ฒ์ 'enqueue', ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด๋ ๊ฒ์ 'dequeue'
Ex. ๋ํ์ ์ผ๋ก ํ๋ฆฐํฐ๋ก ๋ฌธ์๋ฅผ ์์๋๋ก ์ธ์ํ ๋ ์ฌ์ฉ๋จ
- ๋ฌธ์ ์์ฑ ํ ์ถ๋ ฅ๋ฒํผ ๋๋ฅด๋ฉด โ ํด๋น ๋ฌธ์๊ฐ ์ธ์ ์์ (์์๊ธฐ์ต์ฅ์น์) Queue์ ๋ค์ด๊ฐ
- ํ๋ฆฐํฐ๊ฐ ์ธ์ ์์ Queue์ ๋ค์ด์จ ๋ฌธ์๋ฅผ ๋ค์ด์จ ์์๋๋ก ์ธ์
์ปดํจํฐ ์ฅ์น๋ค ์ฌ์ด์์ ๋ฐ์ดํฐ ์ฃผ๊ณ ๋ฐ์ ๋, ๊ฐ ์ฅ์น ์ฌ์ด์ ์๋ ์ฐจ์ด, ์๊ฐ ์ฐจ์ด ๊ทน๋ณต์ ์ํด ์์ ๊ธฐ์ต ์ฅ์น์ ์๋ฃ๊ตฌ์กฐ๋ก Queue ์ฌ์ฉ โ ๋ฒํผ(buffer)
๐ก ๋ฒํผ๋ง(buffering)
์ปดํจํฐ์ CPU์์๋ ์ด๋ฒคํธ๋ฅผ ๊ท์น์ ์ผ๋ก ์ฒ๋ฆฌํ๋๋ฐ ๋๋ถ๋ถ์ ์ปดํจํฐ ์ฅ์น์์๋ ์ด๋ฒคํธ๊ฐ ๋ถ๊ท์นํ๊ฒ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ๊ทธ ๋ถ๊ท์น์ ์ธ ์ด๋ฒคํธ๋ฅผ ๊ท์น์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ฒํผ(buffer)๋ฅผ ์ฌ์ฉํ๋ ๊ฒ
โ
Ex. ์ปดํจํฐ / ํ๋ฆฐํฐ ์ฌ์ด์ ๋ฐ์ดํฐ(data) ํต์
( ํ๋ฆฐํฐ๋ ์๋๊ฐ ๋๋ฆฌ๊ณ ์ปดํจํฐ์ CPU๋ ๋ฐ์ด์ฒ ์ฒ๋ฆฌ ์๋๊ฐ ๊ทธ์ ๋นํด ๋น ๋ฆ )
- CPU๊ฐ ๋น ๋ฅด๊ฒ ์ธ์์ ํ์ํ ๋ฐ์ดํฐ(data) ๋ง๋ค๊ณ , ์ธ์ ์์ Queue์ ์ ์ฅ ํ ๋ค๋ฅธ ์์ ํจ
- ํ๋ฆฐํฐ๋ ์ธ์ ์์ Queue์์ ๋ฐ์ดํฐ(data) ๋ฐ์์ ์ผ์ ํ ์๋๋ก ์ธ์
FIFO(First In First Out)
๋ฐ์ดํฐ๋ ํ๋์ฉ๋ง ๋ฃ๊ณ ๋บ ์ ์์
๋๊ฐ์ ์ ์ถ๋ ฅ ๋ฐฉํฅ
( ๋จผ์ ํด๋์ค์ ๋ฉ์๋ ๋ง๋ค๊ณ ๋ฉ์ธ์์ ์ฌ์ฉํด์ผํจ )
add(data)
- ํ์ ๋ฐ์ดํฐ ์ถ๊ฐ
(์ฑ๊ณตํ๋ฉด true๋ฅผ ๋ฐํ, ์ ์ฅ๊ณต๊ฐ์ด ๋ถ์กฑํ๋ฉด ย IllegalStateExceptionย ๋ฐ์)
poll()
- ๊ฐ์ฅ ๋จผ์ ์ถ๊ฐ๋ ๋ฐ์ดํฐ๋ฅผ ํ์์ ๊บผ๋(์ญ์ )
(๋น์ด์์ผ๋ฉด null์ ๋ฐํ)
size()
- ํ์ ํฌ๊ธฐ ๋ฐํ
peek()
- ํ์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ์์ด ๋ฐํ(๊ทธ๋ฅ ์ฝ์ด์ด)
(๋น์ด์์ผ๋ฉด null์ ๋ฐํ)
element()
- ํ์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ์์ด ๋ฐํ(๊ทธ๋ฅ ์ฝ์ด์ด)
(ย peekย ์ ๋ฌ๋ฆฌ ๋น์ด์์ผ๋ฉด ย NoSuchElementExceptionย ๋ฐ์)
show()
- ํ์ ๋ค์ด์๋ ๋ชจ๋ ๋ฐ์ดํฐ ๋ฐํ(๊ทธ๋ฅ ์ฝ์ด์ด)
clear()
- ํ์ ๋ค์ด์๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ญ์
์ค๋์ ๊ฐ๋ ์ด ์๊ฐ๋ณด๋ค ๊ด์ฐฎ๊ธธ๋ ๋ญ์ง?? ํ๋๋ฐ coplit ๋ฌธ์ ๊ฐ ์ด๋ ค์ ๋คใ ๊ทธ๋์ ์ธ๋ฌธ์ ์ธ๋ฐ๋ ์ ์ดํด๊ฐ ์๋๋ ๋ถ๋ถ์ด ์์ด์ ์๊ฐ์ด ์ข ๊ฑธ๋ ธ๋ค ์ค๋ ์ดํด๋ฅผ ๋ง์น๊ณ ๋ด์ผ ๋ณด์ง ์๊ณ ํ์ด์ ๊ฐ์ด ์ ํ์ด๋ด์ผ๊ฒ ๋ค!