-
๐๏ธ ์๋ฃ๊ตฌ์กฐ ๊ณต๋ถํ๊ธฐ 3 | ์ฐ๊ฒฐ ๋ฆฌ์คํธ (Linked List)data structure 2020. 12. 29. 14:09
์ฐ๊ฒฐ ๋ฆฌ์คํธ(Linked List)
์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ํฌ๊ธฐ๊ฐ ๋์ ์ธ ์๋ฃ๊ตฌ์กฐ๋ก, ์๋ฃ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ฑํ๋ ์์์ธ ๋ ธ๋(Node)์ ์ฐ๊ฒฐ๋ก ์ด๋ฃจ์ด์ง ์๋ฃ๊ตฌ์กฐ์ด๋ค. ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๊ฐ์ด ๋ค์ด์ฌ ๋๋ง๋ค ๋ ธ๋๋ฅผ ๋ง๋ค์ด ์ ์ฅํ๊ฒ ๋๋ค.
๋ ธ๋(Node)
๋ ธ๋๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ฑํ๋ ์์๋ค์ ๊ฐ๋ฆฌํค๋ ๋ฐ, ๋ ธ๋์ ๊ตฌ์ฑ์ ํฌ๊ฒ ๋งํฌ, ๋ฐ์ดํฐ ํ๋๋ก ๊ตฌ์ฑ๋์ด์๋ค.
๋ฆฌ์คํธ(List) ์๋ฃ๊ตฌ์กฐ
์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ดํดํ๊ธฐ ์ ์ ๋ฆฌ์คํธ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ดํดํด๋ณด์.
List๋ Dynamic Array๋ก ๋์ ์ธ ์ด๋ ์ด๋ฅผ ๋ปํ๋ค. ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ฌ ๋๋ง๋ค ๋์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
๋ฆฌ์คํธ ์๋ฃ๊ตฌ์กฐ๊ฐ ์๋ ์ ์ ์ธ ์ด๋ ์ด(๋ฐฐ์ด) ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฑ ์ฐ๋ฆฌ๊ฐ ์ง์ ํด์ค ๋งํผ์ ๊ณต๊ฐ์ ์ฌ์ฉํด์ผ ํ๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ธ๋ฑ์ค ๋ฒํธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ด๋ฆฌํ๊ธฐ ์ฝ๋ค๋ ์ฅ์ ์ด ์์ง๋ง, ์ผ๋ง๋ ๊ฐ๋ค์ด ๋ค์ด์ฌ์ง ๋ฏธ๋ฆฌ ์์์ผ ํ๋ฏ๋ก ์ ์ฐํ์ง ์๋ค. ํ์ง๋ง ๋ฆฌ์คํธ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ณต๊ฐ์ด ์ ๋์ ์ผ๋ก ํ๋ณด๊ฐ ๋๊ธฐ ๋๋ฌธ์ ๊ฐ์ด ์๋ค๋ฉด ํฌ๊ธฐ๋ฅผ ์ค์ด๊ณ , ๊ฐ์ด ๋ง๋ค๋ฉด ํฌ๊ธฐ๋ฅผ ๋๋ ค ๊ณต๊ฐ์ ํ๋ณดํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ณต๊ฐ์ ๋ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
์ฆ, ๋งํฌ๋ ๋ฆฌ์คํธ๋ ์๋ฆฌ๋จผํธ(๋ ธ๋)์ ์๋ฆฌ๋จผํธ(๋ ธ๋) ๊ฐ์ ์ฐ๊ฒฐ(๋งํฌ)์ ์ด์ฉํด ๋ฆฌ์คํธ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๊ตฌํํ ๊ฒ์ด๋ค.
์ค์ํ์์๋ ์์ ํ๋ ์ด ๋ฆฌ์คํธ์์ ์๋์ผ๋ก ๋ค์ ์์ ์ด ์ฌ์๋ ๋ ์ฌ์ฉ๋๋ค.
๋งํฌ๋ ๋ฆฌ์คํธ(Linked List) ์ข ๋ฅ
๋งํฌ๋ ๋ฆฌ์คํธ ์๋ฃ ๊ตฌ์กฐ๋ ๋งํฌ๋ฅผ ์ด๋ป๊ฒ ์ฐ๊ฒฐ์ง์ด ์ ์ฅํ๋์ง์ ๋ฐ๋ผ ์ข ๋ฅ๊ฐ ๋๋๋ค. ํฌ๊ฒ 3๊ฐ์ง๋ก ๋ณผ ์ ์๋ค.
- Single Linked List
์ฑ๊ธ ๋งํฌ๋ ๋ฆฌ์คํธ๋ ๋ ธ๋์ ๋ค์ ๋งํฌ๋ฅผ ์๋ ค์ฃผ๋ ๋งํฌ๊ฐ ํ๋๋ฐ์ ์๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ํ ๋ฐฉํฅ์ผ๋ก ์๋ฃ๊ตฌ์กฐ๊ฐ ์ฐ๊ฒฐ๋์ด ์๋ค. ์๋ฃ๊ตฌ์กฐ ์ ์์ผ๋ก ๊ฐ๋ค๊ฐ ๋ค์ ๋ค๋ก ๋์์ฌ ์ ์๋ค. ์ด์ ๋ ธ๋๋ก ๋์๊ฐ ์ ์๋ค๋ ๋จ์ ์ด ์๋ค.
- Double Linked List
๋๋ธ ๋งํฌ๋ ๋ฆฌ์คํธ๋ ์ฑ๊ธ ๋งํฌ๋ ๋ฆฌ์คํธ์ ๋จ์ ์ ํด๊ฒฐํ๋ค. ๋ ธ๋ ๋น ์,๋ค๋ก ๋งํฌ 2๊ฐ ์๋ฐฉํฅ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์์ด์ ๋ค์ ์ด์ ๋ ธ๋๋ก ๋์๊ฐ ์ ์๋ค.
- Circular Linked List
ํ์ ๋งํฌ๋ ๋ฆฌ์คํธ๋ ๋ง์ง๋ง ๋ ธ๋๊ฐ ์ฒซ ๋ฒ์งธ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌ์ผ์ ๊ณ์ ํ์ ํ ์ ์๊ฒ ๋ง๋ค์ด์ง ์๋ฃ๊ตฌ์กฐ์ด๋ค. ํ์ ๋งํฌ๋ ๋ฆฌ์คํธ๋ ์ฑ๊ธ์ด๊ฑฐ๋ ๋๋ธ ๋งํฌ๋ ๋ฆฌ์คํธ์ผ ์ ์๋ค.
Array vs List
๊ทธ๋ผ ๋ฆฌ์คํธ๋ ํญ์ ์ข์ ๊ฒ์ผ๊น?
- ์ธํ ์ฌ์ด์ฆ(์ผ๋ง๋ ๋ค์ด์ค๋์ง) ๋ชจ๋ฅด๋ ์ํฉ : Array < List (์ ๋์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์กฐ์ ํ ์ ์๋ ๋ฆฌ์คํธ๊ฐ ๋ ์ ๋ฆฌํ๋ค)
- ๋ฐ์ดํฐ ํ๋๋น ์๋ชจ๋๋ ๋ฉ๋ชจ๋ฆฌ ์ : Array < List (๋งํฌ๋ ํ๋๋น 4 byte๋ฅผ ์ฐจ์งํ๊ธฐ ๋๋ฌธ์ ์ด๋ ์ด๊ฐ ๋ ์ ๋ค)
- ์ค๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ, ์ญ์ ํ ๋ : Array < List (์ด๋ ์ด์ ๊ฒฝ์ฐ์๋ ์ค๊ฐ์ ๊ฐ์ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํ๊ฒ ๋๋ฉด ์ธ๋ฑ์ค ๋ฒํธ๋ฅผ ์ ๋ถ ๋น๊ธฐ๊ฑฐ๋ ํ ์นธ์ฉ ๋ค๋ก ์ด๋์์ผ์ฃผ์ด์ผ ํ๋ค. ํ์ง๋ง ๋ฆฌ์คํธ์ ๊ฒฝ์ฐ๋ ๋งํฌ์ ์ฐ๊ฒฐ๋ง ๋ฐ๊ฟ์ฃผ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๋ ์ ๋ฆฌํ๋ค)
[์ฐธ๊ณ ์๋ฃ]
'data structure' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐๏ธ ์๋ฃ๊ตฌ์กฐ ๊ณต๋ถํ๊ธฐ 4 | ๋ณํฉ ์ ๋ ฌ(merge sort) (1) 2021.01.19 ๐๏ธ ์๋ฃ๊ตฌ์กฐ ๊ณต๋ถํ๊ธฐ 2 | ์คํ(stack) vs ํ(queue) (0) 2020.12.18 ๐๏ธ ์๋ฃ๊ตฌ์กฐ ๊ณต๋ถํ๊ธฐ 1 | ์๋ฃ๊ตฌ์กฐ์ ๊ฐ๋ (0) 2020.12.17