[์๋ฃ๊ตฌ์กฐ] ์ ํ๊ตฌ์กฐ์ ๋น์ ํ๊ตฌ์กฐ
- -
๐ฃ ์๋ฃ๊ตฌ์กฐ์ ์ ํ ๊ตฌ์กฐ์ ๋น์ ํ ๊ตฌ์กฐ
1ํ๊ธฐ ์๋ฃ๊ตฌ์กฐ ๊ฐ์์ ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ๋ฅผ ์ค๋นํ๋ฉด์ ์๋ฃ ๊ตฌ์กฐ ๊ทธ ์ค ์ ํ๊ตฌ์กฐ์ ๋น์ ํ๊ตฌ์กฐ์ ๋ํด์๋ ์ดํด๋ณด๊ฒ ๋์๋ค. ๊ทธ๋๋ ํ๋ฒ ์ ๋ฆฌํ๊ณ ๊ฐ๋ ๊ฒ์ด ๋์ค์ ์ํด์๋ ํธํ ๊ฒ ๊ฐ์์ ๋์ ๋์ ์ ์ด๋ณธ๋ค. ์์ผ ๋๋ผ๋ ๊ฑฐ์ง๋ง ๋น์ ๊ณต์๋ ์ค์ค๋ก ์ฐพ์์ ๊ณต๋ถ ํ๋ ์ต๊ด์ ๊ธธ๋ค์ฌ์ผ ํ๋ ๊ฒ ๊ฐ๋ค. ๋ ๋จน์ฌ ์ฃผ์ง ์์ผ๋ ํ๋์ฉ ์ฐจ๊ทผ์ฐจ๊ทผ! ๋์๊ฐ๋ณด์!
๐ฃ ์๋ฃ๊ตฌ์กฐ
1. ์๋ฃ๊ตฌ์กฐ์ ๊ฐ๋
- ์๋ฃ ๊ตฌ์กฐ๋ ์ปดํจํฐ์ ์๋ฃ๋ฅผ ํจ์จ์ ์ผ๋ก ์ ์ฅํ๊ธฐ ์ํด ๋ง๋ค์ด์ง ๋ ผ๋ฆฌ์ ์ธ ๊ตฌ์กฐ
- ์๋ฃ ๊ตฌ์กฐ์ ํ๋ช ํ ์ ํ์ ํตํ์ฌ ํจ์จ์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ ์ ์๊ฒ ํ์ฌ ์ฑ๋ฅ์ ํฅ์์ํด
2. ์๋ฃ ๊ตฌ์กฐ์ ๋ถ๋ฅ
์๋ฃ ๊ตฌ์กฐ๋ ์ ํ ๊ตฌ์กฐ์ ๋น์ ํ ๊ตฌ์กฐ๋ก ํฌ๊ฒ ๋๋๋ ๊ฒ์ ํ์ธํ ์ ์์
๊ตฌ์กฐ | ์ค๋ช | ์ข ๋ฅ |
์ ํ ๊ตฌ์กฐ | ๋ฐ์ดํฐ๋ฅผ ์ฐ์์ ์ผ๋ก ์ฐ๊ฒฐํ ์๋ฃ ๊ตฌ์กฐ | ๋ฆฌ์คํธ, ์คํ, ํ, ๋ฐํฌ |
๋น์ ํ ๊ตฌ์กฐ | ๋ฐ์ดํฐ๋ฅผ ๋น์ฐ์์ ์ผ๋ก ์ฐ๊ฒฐํ ์๋ฃ ๊ตฌ์กฐ | ํธ๋ฆฌ, ๊ทธ๋ํ |
- ์๋์ ๊ทธ๋ฆผ์ ํตํด ์ฝ๊ฒ ํ์ ํด๋ณด์
๐ฃ ์ ํ ๊ตฌ์กฐ
1. ๊ฐ๋
์ ํ ๊ตฌ์กฐ๋ ๋ฐ์ดํฐ๋ฅผ ๋น์ฐ์์ ์ผ๋ก ์ฐ๊ฒฐํ ์๋ฃ ๊ตฌ์กฐ
์ ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ์์ ๋ฐ์ดํฐ ์์๋ ์์ฐจ์ ์์๋ก ๋ฐฐ์ด๋๋ฉฐ, ๊ฐ ์์๋ ์ด์ ๋ฐ ๋ค์ ์ธ์ ์์์ ์ฐ๊ฒฐ. ์ด ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ง์ ํ์ํ ์ ์์. ์ฝ์ , ์ญ์ , ์ก์ธ์ค์ ๊ฐ์ ์ผ๋ฐ์ ์ธ ์์ ์ ์ผ๋ฐ์ ์ผ๋ก ์์ฐจ์ ์ผ๋ก ์ํ.
2. ์ข ๋ฅ
2-1. ๋ฆฌ์คํธ
์ ํ ๋ฆฌ์คํธ(Linear List)
๋จ์ผ ์ฐ๊ฒฐ(๊ฐ ๋ ธ๋๊ฐ ๋ค์ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํด) ๋๋ ์ด์ค ์ฐ๊ฒฐ(๊ฐ ๋ ธ๋๊ฐ ๋ค์ ๋ ธ๋์ ์ด์ ๋ ธ๋๋ฅผ ๋ชจ๋ ๊ฐ๋ฆฌํด)์ผ ์ ์์
์ฐ๊ฒฐ ๋ฆฌ์คํธ(Linked List)
๊ฐ ๋ ธ๋๊ฐ ๋ฐ์ดํฐ์ ๋ค์ ๋ ธ๋์ ๋ํ ์ฐธ์กฐ(๋๋ ๋งํฌ)๋ฅผ ํฌํจํ๋ ์ผ๋ จ์ ๋ ธ๋
์์ธํ ๊ฐ๋ ?
์ ํ๋ฆฌ์คํธ, ์ฐ๊ฒฐ๋ฆฌ์คํธ - ํด๋น ๊ฐ๋ ์ ์๋ ์ ๋ฆฌ๊ธ์ ์ฐธ๊ณ !
2-2. ์คํ stack
ํ ๋ฐฉํฅ์ผ๋ก๋ง ์๋ฃ๋ฅผ ๋ฃ๊ณ ๊บผ๋ผ ์ ์๋ LIFO(Last-In First-Out) ํ์ ์ ์ถ ํ์์ ์๋ฃ ๊ตฌ์กฐ
2-3. ํ Queue
ํ ์ชฝ ๋์์๋ ์ฝ์ , ๋ฐ๋์ชฝ ๋์์๋ ์ญ์ ์์ ์ด ์ด๋ฃจ์ด์ง๋ FIFO(First-In First-Out) ํ์์ ์๋ฃ ๊ตฌ์กฐ
2-4. ๋ฐํฌ Deque
ํ์ ์์ชฝ ๋์์ ์ฝ์ ๊ณผ ์ญ์ ๋ฅผ ํ ์ ์๋ ์๋ฃ ๊ตฌ์กฐ
์์ธํ ๊ฐ๋ ?
์คํ,ํ,๋ฐํฌ - ํด๋น ๊ฐ๋ ์ ์๋ ์ ๋ฆฌ๊ธ์ ์ฐธ๊ณ !
๐ฃ ๋น์ ํ ๊ตฌ์กฐ
1. ๊ฐ๋
๋น์ ํ ๊ตฌ์กฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐ์์ ์ผ๋ก ์ฐ๊ฒฐํ ์๋ฃ ๊ตฌ์กฐ
๋น์ ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ์์๋ ๋ฐ์ดํฐ ์์๊ฐ ์์ฐจ์ ์ผ๋ก ๋ฐฐ์ด๋์ง ์์. ๋์ ๊ณ์ธต์ ์ด๊ฑฐ๋ ์ํธ ์ฐ๊ฒฐ๋ ๋ฐฉ์์ผ๋ก ๋ฐฐ์ด๋์ด ์์ ๊ฐ์ ๋ณต์กํ ๊ด๊ณ๋ฅผ ํ์ฑ ๊ฐ๋ฅํจ. ์ํ๋ ์ ํ ๊ตฌ์กฐ์ ๋นํด ๋ ๋ณต์กํ ์ ์์
2. ์ข ๋ฅ
2-1. ํธ๋ฆฌ Tree
ํธ๋ฆฌ๋ ๋ฐ์ดํฐ๋ค์ ๊ณ์ธตํ์ํจ ์๋ฃ ๊ตฌ์กฐ๋ก ๊ทธ๋ํ์ ํน์ํ ํํ์ด๋ค. ๋ ธ๋(node)์ ์ ๋ถ(branch)์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , ์ ์ ์ฌ์ด์ ์ฌ์ดํด(Cycle)์ด ํ์ฑ๋์ด ์์ง ์์ผ๋ฉฐ, ์๋ฃ ์ฌ์ด์ ๊ด๊ณ์ฑ์ด ๊ณ์ธต ํ์์ผ๋ก ๋ํ๋๋ ๋น์ ํ ๊ตฌ์กฐ
2-2. ๊ทธ๋ํ Graph
๊ทธ๋ํ๋ ๋ ธ๋(Node)์ ๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฐ์ (Edge)์ ํ๋๋ก ๋ชจ์ ๋์ ์๋ฃ ๊ตฌ์กฐ
์์ธํ ๊ฐ๋ ?
ํธ๋ฆฌ์ ๊ทธ๋ํ- ํด๋น ๊ฐ๋ ์ ์๋ ์ ๋ฆฌ๊ธ์ ์ฐธ๊ณ !
๐ฃ ์ ํ ๊ตฌ์กฐ vs ๋น์ ํ ๊ตฌ์กฐ
1. ๋ฉ๋ชจ๋ฆฌ ํ์ฉ
์ ํ ๊ตฌ์กฐ
์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ ์์น๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ ๊ณต๊ฐ์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉ
๋น์ ํ ๊ตฌ์กฐ
๋ ๋ณต์กํ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๊ฐ ํ์ํ ์ ์์ผ๋ฉฐ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ ์ ์
2. ๋ณต์ก์ฑ
์ ํ ๊ตฌ์กฐ
์ผ๋ฐ์ ์ผ๋ก ๊ตฌํํ๊ณ ์ดํดํ๊ธฐ๊ฐ ๋ ์ฌ์
๋น์ ํ ๊ตฌ์กฐ
๋ ๋ณต์กํ ๊ด๊ณ๋ฅผ ๋ํ๋ผ ์ ์์ผ๋ฉฐ ๊ณ ๊ธ ์์ฉ ํ๋ก๊ทธ๋จ์์ ์์ฃผ ์ฌ์ฉ
3. ์ํ
์ ํ ๊ตฌ์กฐ
ํ์์ด ๊ฐ๋จ
๋น์ ํ ๊ตฌ์กฐ
๋น์ ํ ๊ตฌ์กฐ์ ์ํ๋ ๋ ๋ณต์กํ ์ ์์ผ๋ฉฐ ํน์ ์๊ณ ๋ฆฌ์ฆ(์: ์์ฐจ, ์ฌ์ ์์, ์ฌํ ์์์ ๊ฐ์ ํธ๋ฆฌ ์ํ ์๊ณ ๋ฆฌ์ฆ)์ด ํ์ํ ์ ์
4. ์ฝ์ , ์ญ์
์ ํ ๊ตฌ์กฐ
์์๋ฅผ ์ด๋ํด์ผ ํ๊ธฐ ๋๋ฌธ์(ํนํ ๋ฐฐ์ด์์) ์ด๋ฌํ ์์ ์ ์๊ฐ์ด ๋ ๋ง์ด ๊ฑธ๋ฆด ์ ์์
๋น์ ํ ๊ตฌ์กฐ
์ฝ์ ๊ณผ ์ญ์ ๊ฐ ๋ ํจ์จ์ ์ผ ์ ์์ง๋ง ํฌ์ธํฐ๋ ์ฐธ์กฐ๋ฅผ ์ฒ๋ฆฌํด์ผ ํจ
์ ํ๊ตฌ์กฐ์ ๋น์ ํ๊ตฌ์กฐ์ ๊ฐ๋ ๊ณผ ์ข ๋ฅ๋ค์ ๋ํด์ ์ดํด๋ณด์๋ค. ๊ฐ๊ฐ์ ์์ธํ ๊ฐ๋ ๋ค์ ๋ฐ๋ก ๊ฒ์๊ธ๋ก ์ ๋ฆฌํด ๋งํฌ๋ฅผ ๊ฑธ์ด๋จ์ผ๋ ์ฐธ๊ณ ํ๊ธฐ ๐ค๐ค๐ผ
ํ๋๋์ฉ ๋์๊ฐ๋ค ๋ณด๋ฉด ! _ !
[์๋ฃ๊ตฌ์กฐ] ์ ํ ๋ฆฌ์คํธ(Linear List)์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Linked List)
๐ฃ ๋ฆฌ์คํธ(List)์ค๋์ ๋ฆฌ์คํธ(List)์ ๋ํด์ ์ดํด๋ณด๊ฒ ๋น! ์์์ ์ดํด๋ณธ ๊ฒ๊ณผ ๊ฐ์ด! ์๋ฃ ๊ตฌ์กฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐ์์ ์ผ๋ก ์ฐ๊ฒฐํ '์ ํ ๊ตฌ์กฐ'์ ๋ฐ์ดํฐ๋ฅผ ๋น์ฐ์์ ์ผ๋ก ์ฐ๊ฒฐํ '๋น์ ํ ๊ตฌ์กฐ'๋ก ๋๋
haileyham.tistory.com
'CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ชจ๋(Module), ์ปดํฌ๋ํธ(Component) (0) | 2024.01.16 |
---|---|
[์๋ฃ๊ตฌ์กฐ] ํธ๋ฆฌ(Tree)์ ๊ทธ๋ํ(Graph) (0) | 2024.01.15 |
[์๋ฃ๊ตฌ์กฐ] ์คํ(Stack), ํ(Queue), ๋ฐํฌ(Deque) (0) | 2024.01.15 |
[์๋ฃ๊ตฌ์กฐ] ์ ํ ๋ฆฌ์คํธ(Linear List)์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Linked List) (0) | 2024.01.15 |
๊ธฐ๊ณ์ด, ์ด์ ๋ธ๋ฆฌ์ด, ๊ณ ๊ธ์ธ์ด ํ๋ก๊ทธ๋๋ฐ์ ์ฐจ์ด (0) | 2024.01.03 |
์์คํ ๊ณต๊ฐ ๊ฐ์ฌํฉ๋๋ค