โ ๋ฆฌ์คํธ(list)๋?
์ ํ๋ฆฌ์คํธ๋ผ๊ณ ๋ ํ๋ฉฐ ํญ๋ชฉ ๊ฐ ์์๋ฅผ ์ ํ ๋ฐ์ดํฐ๊ฐ ๋์ด๋ ์๋ฃ๊ตฌ์กฐ. ์ค๋ณต์ด ํ์ฉ๋๋ค.
๊ตฌํ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ์์ฐจ๋ฆฌ์คํธ์ ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ก ๊ตฌ๋ถํ๋ค.
๐ก ์งํฉ(set)์ ์์๊ฐ ์๋ ํญ๋ชฉ๋ค์ด ๋์ด๋ ๊ตฌ์กฐ. ์ค๋ณต ํ์ฉX
List Operation :
- insert(list, pos, item) : list์ pos ์์น์ item ์ถ๊ฐ
- insert_last(list, item) : list ์ ๋ง์ง๋ง ์์น์ item ์ถ๊ฐ
- insert_first(list, item) : list์ ์ฒซ๋ฒ์งธ ์์น์ item ์ถ๊ฐ
- delete(list, pos) : list ์ pos ์์น์ ์์ ์ญ์
- clear(list) : list ๋ฅผ ๋น์
- replace(list, pos, item) : list์ pos ์์น์ ์์๋ฅผ item ์ผ๋ก ๋ณ๊ฒฝ
- is-in_list(list, item) : list ์ item ์ด ์๋์ง ๊ฒ์ฌ
- get_entry(list, pos) : list ์ pos ์์น์ ์์ ๋ฐํ
- get_length(list) : list ์ ๊ธธ์ด ๋ฐํ
- is_empty(list) : list๊ฐ ๋น์๋์ง ๊ฒ์ฌ
- is_full(list) : list๊ฐ ๊ฝ ์ฐผ๋์ง ๊ฒ์ฌ
- print_list(list) : list์ ๋ชจ๋ ์์ ํ์
- merge_list(list1, list2) : ๋ฆฌ์คํธ ๊ฐ ๊ฒฐํฉ
- partition_list(list, pos) : pos ์์น๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฆฌ์คํธ ๋ถํ
โ ๋ฐฐ์ด (array)
๊ฐ์ ํ์ ์ ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ฃนํํ์ฌ ๊ด๋ฆฌํ๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ.
index - value ์์ ๊ตฌ์กฐ๋ก, ๋ฆฌ์คํธ๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
์ฅ์
- ๊ตฌํ์ด ์ฉ์ดํ๊ณ ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ํ์ ์์
- index ๋ก element์ ๋ฐ๋ก ์ ๊ทผํ๋ฏ๋ก ํ์ ์๋๊ฐ ๋น ๋ฆ
๋จ์
- ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๊ฐ ๊ณ ์ ๋ static ๋ณ์๋ค. ํ์ฅ์ด ๋ถ๊ฐ๋ฅํจ
- ์ ์ฅ ๋๋ ์ฒ๋ฆฌํด์ผ ํ๋ ๋ฐ์ดํฐ ์๊ฐ ์ ํํ์ง ์์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๊ฐ ๋ฐ์ํ ์ ์์
- ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ๊ณ ์ญ์ ํ ๋๋ง๋ค ๋ฐ์ดํฐ์ ์ด๋์ด ๋ฐ์ํจ
โ ์์ฐจ๋ฆฌ์คํธ (Array List)
์์ฐจ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋นํ์ฌ ๊ตฌํํ๋ ๋ฆฌ์คํธ. ๋ณดํต ๋ฐฐ์ด๋ก ๊ตฌํ๋๋ค.
์ฐธ๊ณ ) ๋ณดํต Array ์ ๊ฐ์ ์ทจ๊ธ์ ํ์ง๋ง, ์๋ฐ์์ Array List ๋ผ๋ ๋ณ๋์ ์๋ฃ๊ตฌ์กฐ๊ฐ ์กด์ฌํ๋ฏ๋ก ๋๋์ด ์ค๋ช ํจ.
์ฅ์
- ๋ฐฐ์ด๋ก ๊ตฌํํ๋ ๊ฒฝ์ฐ ๋ฐฐ์ด์ ์ฅ์ ์ ๊ทธ๋๋ก ๋ฌผ๋ ค๋ฐ๋๋ค.
๋จ์
- ๋ฐฐ์ด์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ฐฐ์ด์ ๋จ์ ์ ๊ทธ๋๋ก ๋ฌผ๋ ค๋ฐ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๊ฐ ๊ณ ์ ๋๋ฏ๋ก ํ์ฅํ๊ธฐ ์ํด ๋ณ๋์ ์ฒ๋ฆฌ๊ฐ ํ์ํ๋ค.
๐ก Array ์ Array List ์ ์ฐจ์ด
Java ์์ Array List ๋ capacity ๋ฅผ ๊ฐ์ง๊ณ ์์ด, ๋ฃ์ผ๋ ค๋ ๋ฐ์ดํฐ๊ฐ capacity ๋ณด๋ค ๋ง์ ๊ฒฝ์ฐ ์ฌ์ด์ฆ๋ฅผ ์ผ์ ๋ ๋๋ฆฐ๋ค. ํฌ๊ธฐ๊ฐ ํ์ฅ๋ ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋ค์ด ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ์ด๋์ํค๋ ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌํ๋๋ ๊ฒ ์ผ๋ฐ์ . Array ์ ๋ฌ๋ฆฌ Array List ๋ ํ์ฅ ๊ฐ๋ฅํ์ง๋ง, Array ๋ณด๋ค ์ฐ์ฐ์๋๊ฐ ๋๋ฆฌ๋ค๋ ๋จ์ ์ด ์๋ค.
โ ์ฐ๊ฒฐ๋ฆฌ์คํธ (linked list)
๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐ์ ๊ณต๊ฐ์ ํฉ์ด์ ธ ์๋ ์ํ์์ ๋ค์ ๋ฐ์ดํฐ์ ์์น ์ ๋ณด๋ฅผ ๋ณด์ ํ๊ฒ ํ๋ ๊ตฌ์กฐ
๋ฐ์ดํฐ์ ๋ค์ ๋ ธ๋ ์ฃผ์๋ฅผ ์ ์ฅํ ์ ์๋ ๋ค๋ฅธ ์๋ฃ๊ตฌ์กฐ(vector ๋ฑ) ์ ๋ฉ๋ชจ๋ฆฌ ๋์ ํ ๋น ๊ธฐ๋ฒ์ ์ด์ฉํ์ฌ ๊ตฌํํจ
๋ค๋ฅธ ์ฌ๋ฌ ์๋ฃ๊ตฌ์กฐ(์คํ, ํ, ํธ๋ฆฌ, ๊ทธ๋ํ)๋ฅผ ๊ตฌํํ๋๋ฐ๋ ๋ง์ด ์ฌ์ฉํ๋ค.
์ฅ์
- ๋์ ์ผ๋ก ํฌ๊ธฐ๊ฐ ๋ณํ ์ ์์ (ํ์ฅ ๊ฐ๋ฅ)
- ์ญ์ ๋ ์ฝ์ ์ ์์น ์ ๋ณด๋ง ๋ณด์ /ํด์ ํ๋ฉด ๋๋ฏ๋ก ๋ฐ์ดํฐ๋ฅผ ์ด๋ํ ํ์๊ฐ ์์
๋จ์
- ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ๋ค์ ๋ฐ์ดํฐ์ ์์น๋ฅผ ์ง์ํ๋ ๋ฐ ํ์ํ ์ถ๊ฐ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ํ์ํจ
- ๋ฐฐ์ด์ ๋นํด ๊ตฌํ์ด ๋ณต์กํจ
- i๋ฒ์งธ ๋ฐ์ดํฐ๋ฅผ ํ์ ์ ์์์๋ถํฐ ์์ฐจ์ ์ผ๋ก ์ ๊ทผํ์ฌ์ผ ํจ
โ ๋จ์ผ ์ฐ๊ฒฐ๋ฆฌ์คํธ (singly linked list)
ํ๋์ ๋ฐฉํฅ์ผ๋ก๋ง ์ฐ๊ฒฐ๋์ด ์๋ ์ฐ๊ฒฐ๋ฆฌ์คํธ
์ฒด์ธ(chain)์ด๋ผ๊ณ ๋ ํจ
๋ง์ง๋ง ๋ ธ๋์ ๋งํฌ๋ NULL๊ฐ์ ๊ฐ์ง
๋ ธ๋ ์ฝ์ ์ ์ฐจ
- ์๋ก์ด ๋ ธ๋ ์์ฑํ๊ณ ๋ฐ์ดํฐ ํ๋์ ๋ฐ์ดํฐ ์ ์ฅ
- ๋งํฌํ๋์ ํํ๋ ธ๋์ ์ฃผ์๋ฅผ ์ ์ฅ
- ์ ํ๋ ธ๋์ ๋งํฌํ๋ ๊ฐ์ ์๋ก์ด ๋ ธ๋์ ์ฃผ์๋ก ์ค์
๋ ธ๋ ์ญ์ ์ ์ฐจ
- ์ญ์ ํ ๋ ธ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฅธ ๊ณณ์ผ๋ก ๋ณต์ฌ (๋ฐฑ์ )
- ์ญ์ ํ ๋ ธ๋์ ์ด์ ๋ ธ๋ ํ์
- ์ญ์ ํ ๋ ธ๋์ ๋งํฌํ๋ ๊ฐ์ ํ์ํ ์ ํ๋ ธ๋์ ๋งํฌํ๋๋ก ์ค์
โ ์ํ ์ฐ๊ฒฐ๋ฆฌ์คํธ (circular linked list)
๋ฆฌ์คํธ์ ๋ง์ง๋ง ๋ ธ๋๊ฐ ์ฒซ๋ฒ์งธ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
์ฆ, ๋ง์ง๋ง ๋ ธ๋์ ๋งํฌ๊ฐ NULL์ด ์๋ ์ฒซ๋ฒ์งธ ๋ ธ๋์
ํ ๋ ธ๋์์ ๋ค๋ฅธ ๋ชจ๋ ๋ ธ๋๋ก์ ์ ๊ทผ์ด ๊ฐ๋ฅํด์ ธ ์ฝ์ , ์ญ์ , ํ์์ด ์ฉ์ด
โ ์ด์ค ์ฐ๊ฒฐ๋ฆฌ์คํธ (doubly linked list)
๋จ์์ฐ๊ฒฐ๋ฆฌ์คํธ๋ ์ํ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ ํ์ฌ ๋ ธ๋์ ๋ฐ๋ก ์ ์ ํ ๋ ธ๋๋ก ์ด๋ํ ์ ์์
์ด๋ฌํ ๋ฌธ์ ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด ๋ชจ๋ ๋ ธ๋๋ ์ ํ๋ ธ๋์ ํํ๋ ธ๋ ๋ชจ๋๋ฅผ ๊ฐ๋ฆฌํค๋ 2๊ฐ์ ๋งํฌํ๋๋ฅผ ๊ฐ๋๋ก ํจ