๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๊ธฐ๋ณธ ์ฌ๋ฃ
๋ฐ์ดํฐ๋ฅผ ๊ตฌ์ฑํ๋ ๊ธฐ๋ณธ ์ฌ๋ฃ๋ก๋ ๋ฐฐ์ด๊ณผ ์ฐ๊ฒฐ๋ฆฌ์คํธ๊ฐ ์กด์ฌํ๋ค. ์ด๋ ๊ณ ๊ธ ๋ฐ์ดํฐ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ถํ๋ ๊ธฐ๋ณธ ์ฌ๋ฃ๋ก ์ฐ์ด๊ธฐ ๋๋ฌธ์ ์ ์์๋์ด์ผ ํ๋ค!
๋ฐฐ์ด (array)
์์ฐจ ๊ธฐ์ต์ฅ์์ ํ ๋น๋ ์ ํ ๊ฐ์์ ๋์ผ ์๋ฃํ ๋ฐ์ดํฐ ์์๋ค
๋ฐฐ์ด์ 1์ฐจ์ ๋ฟ๋ง ์๋๋ผ N์ฐจ์ ๋ฐฐ์ด์ด ์กด์ฌํ๋ค.
๋ค์ฐจ์ ๋ฐฐ์ด
2์ฐจ์ ๋ฐฐ์ด์ pandas์ DataFrame๊ณผ ๊ฐ์ ๋ชจ์์ด๋ค. ํ ์ด๋ธ(table)์ด๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ฉฐ 1์ฐจ์๊ณผ 2์ฐจ์์ ๊ฐ๊ฐ ํ(row)๊ณผ ์ด(Column)๋ก๋ ๋ถ๋ฆฐ๋ค.
3์ฐจ์ ๋ฐฐ์ด์ 2์ฐจ์ ๋ฐฐ์ด์ด ์ฌ๋ฌ ๊ฐ ํฉ์ณ์๋ ๊ฒ์ด๋ค. (ex. 4๋ถ๊ธฐ๋ณ ์ธ ํ์์ 8๊ณผ๋ชฉ์์์ ์ ์)
4์ฐจ์ ๋ฐฐ์ด์ 3์ฐจ์ ๋ฐฐ์ด์ด ์ฌ๋ฌ ๊ฐ ํฉ์ณ์๋ ๊ฒ์ด๋ค. (ex. 3๋ ๊ฐ 4๋ถ๊ธฐ๋ณ ์ธ ํ์์ 8๊ณผ๋ชฉ์์์ ์ ์)
์ฐ๊ฒฐ๋ฆฌ์คํธ (Linked list)
๋์ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋, ๋งํฌ์ ์ํด ์ฐ๊ฒฐ๋ ์ ํ ๊ฐ์์ ๋ฐ์ดํฐ์์์ ๋ ธ๋๋ค
์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์ข ๋ฅ
- ๋จ์ผ์ฐ๊ฒฐ๋ฆฌ์คํธ(singly linked lists)
- ์ด์ค์ฐ๊ฒฐ๋ฆฌ์คํธ(doubly linked lists)
- ์ํ์ฐ๊ฒฐ๋ฆฌ์คํธ(circularly linked lists)
- ํค๋๋ฐํธ๋ ์ผ๋ฌ์ฐ๊ฒฐ๋ฆฌ์คํธ(linked lists with header and trailer)
- ์ด๋ค์ ๋ณตํฉ
๋ฐ์ดํฐ ์์์ ๋ ธ๋๋ผ๊ณ ํํ๋์๋๋ฐ ๋ ธ๋๋ ๋ฌด์์ผ๊น?
๋ ธ๋(node): ํ๊ฐ์ ๋ฐ์ดํฐ ์์๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ๋์ ๋ฉ๋ชจ๋ฆฌ(dynamic memory)์ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ
์ด๋ฉฐ, ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์ข ๋ฅ์ ๋ฐ๋ผ ๋ ธ๋์ ๊ตฌ์ฑ์ด ์ฝ๊ฐ์ฉ ๋ฌ๋ผ์ง๋ค.
๋จ์ผ ์ฐ๊ฒฐ๋ฆฌ์คํธ
๋จ์ผ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ ์ฐ์๋ ธ๋๋ก ๊ตฌ์ฑ๋, ๊ฐ์ฅ ๋จ์ํ ์ฐ๊ฒฐ๋ฐ์ดํฐ ๊ตฌ์กฐ์ด๋ค. ๋ ธ๋๋ ์์ ๊ฐ์ด ์์์ ๋งํฌ๋ก ๊ตฌ์ฑ๋์ด์๊ณ , ์์๋ ๋ฐ์ดํฐ๋ฅผ ๋งํฌ๋ ๋ค์ ๋ ธ๋์ ์ฃผ์๋ฅผ ์ ์ฅํ๋ค. ์์ ๊ฐ์ ๋ ธ๋๊ฐ ์ฌ๋ฌ ๊ฐ๋ก ์ฐ๊ฒฐ๋๋ฉฐ ๋จ๋ฐฉํฅ์ผ๋ก๋ง ์ด๋ํ ์ ์๋ค.
๋ค์ ๋ ธ๋๊ฐ ์๋ ๊ฒฝ์ฐ๋ ๋๋งํฌ๋ฅผ ์ ์ฅํ๋ฉฐ, ์ ๊ทผ์ ์ ์ฒซ ๋ ธ๋ ์ฆ, ํค๋๋ ธ๋์ ์ฃผ์์ด๋ค.
์ด์ค ์ฐ๊ฒฐ๋ฆฌ์คํธ
์ด์ค์ฐ๊ฒฐ๋ฆฌ์คํธ๋ ์ถ๊ฐ ๋งํฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ญ๋ฐฉํฅ ์ํ๋ ๊ฐ๋ฅํ๋ค. ๋ฐ๋ผ์ ๋ ธ๋์ ๊ตฌ์ฑ๋ ๋ฌ๋ผ์ง๊ฒ ๋๋ค.
๋ ธ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์์, ๋ค์ ๋ ธ๋์ ์ฃผ์๋ฅผ ์ ์ฅํ๋ ๋งํฌ, ์ถ๊ฐ๋ก ์ด์ ๋ ธ๋์ ์ฃผ์๋ฅผ ์ ์ฅํ๋ ๋งํฌ๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
์๋ฐฉํฅ์ผ๋ก ์์ง์ผ ์ ์๊ธฐ ๋๋ฌธ์, ์ ๊ทผ์ ์ ํค๋๋ ธ๋(Head node)์ ์ฃผ์ ๋๋ ํ ์ผ๋ ธ๋(Tail node)์ ์ฃผ์์ด๋ค.
์ํ ์ฐ๊ฒฐ๋ฆฌ์คํธ
์ํ ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ ๋ง์ง๋ง ๋ ธ๋์ ๋งํฌ๊ฐ ํค๋๋ ธ๋์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋ ์ฐ๊ฒฐ๋ฆฌ์คํธ์ด๋ค.
๋ ธ๋๋ ๋จ์ผ์ฐ๊ฒฐ๋ฆฌ์คํธ์ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๊ณ , ์ ์ฒด ๊ตฌ์กฐ๋ฅผ ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
ํค๋์ ํธ๋ ์ผ๋ฌ
ํค๋์ ํธ๋ ์ผ๋ฌ๋ ํค๋๋ ธ๋ ๋ฐ๋ก ์์ ํค๋ ํน์ ํ ์ผ๋ ธ๋ ๋ฐ๋ก ๋ค์ ํธ๋ ์ผ๋ฌ ๋ ธ๋๋ฅผ ์ถ๊ฐํ์ฌ ์์ ํธ์์ฑ์ ๋์ผ ์ ์๋ค. ํค๋์ ํธ๋ ์ผ๋ฌ์๋ dummy element๋ฅผ ์ ์ฅํ๋ค. ์ด๋ก ์ ์ผ๋ก ๋ณด๋ฉด ์ ์์ ํธ์์ฑ์ด ์ฆ์ง๋๋์ง ๊ฐ์ด ์ ์์ค์ง๋ง, ๊ตฌํํด๋ณด๋ฉด ํค๋์ ํธ๋ ์ผ๋ฌ ๋ ธ๋๊ฐ ์๋ค๋ฉด ๊ต์ฅํ ํธ์ํ ๊ฒ์ ๋๋ ์ ์๋ค.
์ด์ธ์๋ ์ฌ๋ฌ ์ฐ๊ฒฐ๋ฆฌ์คํธ๊ฐ ์๋ค.
์ํ ํค๋ ์ฐ๊ฒฐ๋ฆฌ์คํธ(circular header linked lists)
์ํ ์ด์ค์ฐ๊ฒฐ๋ฆฌ์คํธ (circular doubly linked lists)
ํค๋ ๋ฐ ํธ๋ ์ผ๋ฌ ์ด์ค์ฐ๊ฒฐ๋ฆฌ์คํธ
ํค๋ ๋ฐ ํธ๋ ์ผ๋ฌ ์ํ ์ด์ค์ฐ๊ฒฐ๋ฆฌ์คํธ