๐ฃ ๋ฆฌ์คํธ(List)
์ค๋์ ๋ฆฌ์คํธ(List)์ ๋ํด์ ์ดํด๋ณด๊ฒ ๋น! ์์์ ์ดํด๋ณธ ๊ฒ๊ณผ ๊ฐ์ด! ์๋ฃ ๊ตฌ์กฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐ์์ ์ผ๋ก ์ฐ๊ฒฐํ '์ ํ ๊ตฌ์กฐ'์ ๋ฐ์ดํฐ๋ฅผ ๋น์ฐ์์ ์ผ๋ก ์ฐ๊ฒฐํ '๋น์ ํ ๊ตฌ์กฐ'๋ก ๋๋๋ค. ์ ํ ๊ตฌ์กฐ ์ค์ ํ๋์ธ ๋ฆฌ์คํธ์ ๋ํด์ ์ดํด๋ณผ๊ฑด๋ฐ, ์ด๋ '์ ํ ๋ฆฌ์คํธ'์ '์ฐ๊ฒฐ ๋ฆฌ์คํธ'๋ก ๋๋ ์ ์ดํด๋ณผ ์ ์๋ค!_! ์ค๋๋ ๋ ์ธ ๊ฝ!
์๋๋ ์๋ฃ ๊ตฌ์กฐ์ ๊ฐ๋
๊ณผ ์ ์ฒด ํ์ ๋ํด์ ์ค๋ช
ํ์ฌ ์ ๋ฆฌํ ๊ธ! ์ฐธ๊ณ ํ๊ธฐ
[์๋ฃ๊ตฌ์กฐ] ์ ํ๊ตฌ์กฐ์ ๋น์ ํ๊ตฌ์กฐ
๐ฃ ์๋ฃ๊ตฌ์กฐ์ ์ ํ ๊ตฌ์กฐ์ ๋น์ ํ ๊ตฌ์กฐ 1ํ๊ธฐ ์๋ฃ๊ตฌ์กฐ ๊ฐ์์ ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ๋ฅผ ์ค๋นํ๋ฉด์ ์๋ฃ ๊ตฌ์กฐ ๊ทธ ์ค ์ ํ๊ตฌ์กฐ์ ๋น์ ํ๊ตฌ์กฐ์ ๋ํด์๋ ์ดํด๋ณด๊ฒ ๋์๋ค. ๊ทธ๋๋ ํ๋ฒ ์ ๋ฆฌํ๊ณ ๊ฐ๋
haileyham.tistory.com
๐ฃ ์ ํ ๋ฆฌ์คํธ(Linear List)
1. ๊ฐ๋
์ ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ์์ ๋ฐ์ดํฐ ์์๋ ์์ฐจ์ ์์๋ก ๋ฐฐ์ด๋๋ฉฐ, ๊ฐ ์์๋ ์ด์ ๋ฐ ๋ค์ ์ธ์ ์์์ ์ฐ๊ฒฐ. ์ด ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ง์ ํ์ ๊ฐ๋ฅ. ์ฝ์
, ์ญ์ , ์ก์ธ์ค์ ๊ฐ์ ์ผ๋ฐ์ ์ธ ์์
์ ์ผ๋ฐ์ ์ผ๋ก ์์ฐจ์ ์ผ๋ก ์ํ.
2. ํน์ง
- ๋ฐฐ์ด๊ณผ ๊ฐ์ด ์ฐ์๋๋ ๊ธฐ์ต ์ฅ์์ ์ ์ฅ๋๋ ๋ฆฌ์คํธ
- ์ ํ ๋ฆฌ์คํธ์ ๋ํ์ ์ธ ๊ตฌ์กฐ๋ ๋ฐฐ์ด(Array)
- ๊ฐ์ฅ ๊ฐํธํ ์๋ฃ๊ตฌ์กฐ, ์ ๊ทผ ๊ตฌ์กฐ ๋น ๋ฆ
- ์๋ฃ์ ์ฝ์
, ์ญ์ ์ ๊ธฐ์กด ์๋ฃ์ ์ด๋ ํ์
3. ๋ฐฐ์ด(Array)
- ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ ํค๋ก ์๋ณ๋๋ ์์์ ๋ชจ์
- ๋ชจ๋ ์์๋ ๋์ผํ ๋ฐ์ดํฐ ์ ํ์ ๊ฐ์ง๋ฉฐ ์ธ์ ํ ๋ฉ๋ชจ๋ฆฌ ์์น์ ์ ์ฅ
- ์ก์ธ์ค ์๊ฐ์ ์ผ์ ํ์ง๋ง(O(1)) ์ฝ์
๋ฐ ์ญ์ ์๋ ๋น์ฉ์ด ๋ง์ด ๋ค ์ ์์
๐ฃ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Linked List)
1. ๊ฐ๋
์ฐ๊ฒฐ๋ฆฌ์คํธ๋ ๊ฐ ๋
ธ๋๊ฐ ๋ฐ์ดํฐ์ ๋ค์ ๋
ธ๋์ ๋ํ ์ฐธ์กฐ(๋๋ ๋งํฌ)๋ฅผ ํฌํจํ๋ ์ผ๋ จ์ ๋
ธ๋. ๋จ์ผ ์ฐ๊ฒฐ(๊ฐ ๋
ธ๋๊ฐ ๋ค์ ๋
ธ๋๋ฅผ ๊ฐ๋ฆฌํด) ๋๋ ์ด์ค ์ฐ๊ฒฐ(๊ฐ ๋
ธ๋๊ฐ ๋ค์ ๋
ธ๋์ ์ด์ ๋
ธ๋๋ฅผ ๋ชจ๋ ๊ฐ๋ฆฌํด). ์์น๋ฅผ ์๊ณ ์์ผ๋ฉด ์ฝ์
๊ณผ ์ญ์ ๊ฐ ํจ์จ์ ์ด์ง๋ง(O(1)), ์ก์ธ์ค ์๊ฐ์ ์ ํ(O(n)).
2. ํน์ง
- ๋
ธ๋์ ํฌ์ธํฐ ๋ถ๋ถ์ผ๋ก ์๋ก ์ฐ๊ฒฐ์ํจ ๋ฆฌ์คํธ
- ์ฐ๊ฒฐํ๋ ๋ฐฉ์์ ๋ฐ๋ผ '๋จ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ, ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ, ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ, ์ด์ค์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ'๋ก ๊ตฌ๋ถ
- ๋
ธ๋์ ์ฝ์
, ์ญ์ ๊ฐ ์ ํ ๋ฆฌ์คํธ์ ๋ฌ๋ฆฌ ํธ๋ฆฌ
- ์ฐ๊ฒฐ์ ์ํ ํฌ์ธํฐ๊ฐ ์ถ๊ฐ๋์ด ์ ์ฅ ๊ณต๊ฐ ์ถ๊ฐ๋ก ํ์
- ํฌ์ธํฐ๋ฅผ ํตํด ์ฐพ๋ ์๊ฐ ์ถ๊ฐ๋์ด ์ ํ ๋ฆฌ์คํธ์ ๋นํด ๋๋ฆผ
3. ๋
ธ๋(Node)์ ํฌ์ธํฐ(Pointer)
๋
ธ๋(Node)
๋ฐ์ดํฐ ์ ์ฅ ๋ถ๋ถ๊ณผ ํฌ์ธํฐ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ ์ ์ฅ ๊ณต๊ฐ
ํฌ์ธํฐ(Pointer)
ํ ์์น์์ ๋ค์ ์์น๋ฅผ ์๋ ค์ฃผ๋ ์์
(์ฐธ๊ณ ) ๋งํฌ์ ํฌ์ธํฐ์ ์ฐจ์ด
'ํฌ์ธํฐ = ๋งํฌ'๋ผ๊ณ ์๊ฐํ๊ธฐ. ๋
ธ๋๋ค์ด ํฌ์ธํฐ๋ก ์ฐ๊ฒฐ๋์๋ค๋ ํํ์ ๋งํฌ(๊ตฌํ์ ์ํ ๋ฌธ๋ฒ -> ํฌ์ธํฐ) ๋ผ๊ณ ์๊ฐ.
ํฌ์ธํฐ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ณ์. Java๋ python ๋ฑ์์๋ ํฌ์ธํฐ ์ฌ์ฉํ์ง ์๊ณ ์๋ ํ ๋น ํด์ฃผ๊ธฐ ๋๋ฌธ์ ์ข ๋ ์ ํํ๊ฒ ํํํ๋ฉด '๋
ธ๋ = ๋ฐ์ดํฐ + ๋งํฌ'๋ผ๊ณ ํ ์ ์์
๐ฃ ๋น๊ตํ๊ธฐ
๋ํ์ ์ธ ๊ตฌ์กฐ
์ ํ ๋ฆฌ์คํธ |
์ฐ๊ฒฐ ๋ฆฌ์คํธ |
๋ฐฐ์ด(Array) |
๋
ธํธ(Node) |
์ฝ์
์ญ์
์ ํ ๋ฆฌ์คํธ |
์ฐ๊ฒฐ ๋ฆฌ์คํธ |
๊ธฐ์กด ์๋ฃ ์ด๋ ํ์ |
ํธ๋ฆฌ |
์ฉ๋
์ ํ ๋ฆฌ์คํธ |
์ฐ๊ฒฐ ๋ฆฌ์คํธ |
๋ ์ ์ ์ฉ๋ |
ํฌ์ธํฐ ์ถ๊ฐ๋ก ์ ์ฅ ๊ณต๊ฐ ์ถ๊ฐ ํ์ |
์ ๊ทผ ๊ตฌ์กฐ
์ ํ ๋ฆฌ์คํธ |
์ฐ๊ฒฐ ๋ฆฌ์คํธ |
๋ ๋น ๋ฅด๊ฒ ์ ๊ทผ |
ํฌ์ธํฐ๋ฅผ ํตํด ์ฐพ์ ์ ํ ๋ฆฌ์คํธ์ ๋นํด ๋๋ฆผ |
๋ค์์ ์คํ, ํ, ๋ฐํฌ๋ฅผ ์์๋ณด์!
[์๋ฃ๊ตฌ์กฐ] ์คํ(Stack), ํ(Queue), ๋ฐํฌ(Deque)
๐ฃ ์ ํ ๊ตฌ์กฐ์์์ ์คํ(Stack), ํ(Queue), ๋ฐํฌ(Deque)์ง๋ ์๊ฐ์๋ ์ ํ ๊ตฌ์กฐ ์ค์ ๋ฆฌ์คํธ(List)์ ๋ํด์ ์ดํด๋ณด์๋ค. ์ด๋ฒ ์๊ฐ์๋ ์คํ(Stack), ํ(Queue), ๋ฐํฌ(Deque)์ ๋ํด์ ์ ๋ฆฌํด๋ณด์! ๋ฆฌ
haileyham.tistory.com