์ํ ์ ๋ฆฌ์คํธ ์์
- ์์ ๋ฆฌ์คํธ, ๋ธ๋ ๋ฆฌ์คํธ, ์๋น์ค๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ฌ๋ ๋ฆฌ์คํธ
๋ฆฌ์คํธ ์๋ฃ๊ตฌ์กฐ์ ADT(์ถ์ ๋ฐ์ดํฐ ํ์ )
๋ฆฌ์คํธ์ ๊ธฐ๋ณธ ์ ์
- ์ค ์ธ์์ ธ ์๋ ๋ฐ์ดํฐ
ADT
i๋ฒ์งธ ์๋ฆฌ์ ์์ x๋ฅผ ์ฝ์ ํ๋ค.
i๋ฒ์งธ ์์๋ฅผ ์ญ์ ํ๋ค.
์์ x๋ฅผ ์ญ์ ํ๋ค.
i๋ฒ์งธ ์์๋ฅผ ์๋ ค์ค๋ค.
์์ x๊ฐ ๋ช ๋ฒ์งธ ์์์ธ์ง ์๋ ค์ค๋ค.
๋ฆฌ์คํธ์ ์ฌ์ด์ฆ(์์์ ์ด ์)๋ฅผ ์๋ ค์ค๋ค.
- ํ์ด์ฝ๋ฅ ๋ฆฌ์คํธ๋ฅผ ๊ธฐ๋ณธ ์๋ฃ๊ตฌ์กฐ๋ก ์ ๊ณตํ๋ฉฐ, ์ ์์ ๋ณด๋ค ํจ์ฉ ๋ ๋ง์ ์์ ์ ์ง์ํจ
- ์๋ฐ๋ ์ธ์ด ์์ฒด์์ ๋ฆฌ์คํธ๋ฅผ java.util ํจํค์ง์์ ์ ๊ณตํจ
๋ฐฐ์ด ๋ฆฌ์คํธ ArrayList
1. ๊ตฌ์ฑ์์
- ๋ด๋ถ๋ฐฐ์ด : ArrayList๋ ๋ด๋ถ์ ์ผ๋ก ๋ฐฐ์ด(Object[])์ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ. ์ด ๋ฐฐ์ด์ ํ์์ ๋ฐ๋ผ ๋์ ์ผ๋ก ํฌ๊ธฐ๊ฐ ์กฐ์ ๋จ.
- ์ฉ๋ : ๋ด๋ถ ๋ฐฐ์ด์ ํ์ฌ ํฌ๊ธฐ. ArrayList์ ์์๋ฅผ ์ถ๊ฐํ ๋ ๋ด๋ถ ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ๋ถ์กฑํ๋ฉด ๋ฐฐ์ด์ด ์๋์ผ๋ก ์ฌํ ๋น๋์ด ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํจ.
- ํฌ๊ธฐ : ArrayList์ ์ค์ ์ ์ฅ๋ ์์์ ์. size() ๋ฉ์๋๋ฅผ ํตํด ์ ์ ์์
2. ์๋ ์๋ฆฌ
- ๋์ ๋ฐฐ์ด : ์ฒ์์๋ ๊ธฐ๋ณธ ํฌ๊ธฐ์ ๋ฐฐ์ด์ ํ ๋น. ์์๊ฐ ์ถ๊ฐ๋ ๋๋ง๋ค ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ๋ถ์กฑํ๋ฉด ๋ ํฐ ์ ๋ฐฐ์ด์ ๋ง๋ค๊ณ , ๊ธฐ์กด ์์๋ค์ ์ ๋ฐฐ์ด๋ก ๋ณต์ฌ.
- ์ธ๋ฑ์ค ์ ๊ทผ : ArrayList๋ ์ธ๋ฑ์ค๋ฅผ ํตํ ๋น ๋ฅธ ์ ๊ทผ์ด ๊ฐ๋ฅ. get(int index) ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ์ธ๋ฑ์ค์ ์์๋ฅผ ๋น ๋ฅด๊ฒ ๊ฒ์ํ ์ ์์
3. ์ฃผ์ ๋ฉ์๋
- add(E element) : ๋ฆฌ์คํธ ๋์ ์์ ์ถ๊ฐ
- add(int index, E element) : ์ง์ ๋ ์ธ๋ฑ์ค์ ์์๋ฅผ ์ถ๊ฐ. ํด๋น ์ธ๋ฑ์ค์ ๊ทธ ์ดํ์ ์์๋ค์ ๋ค๋ก ์ด๋
- remove(int index): ์ง์ ๋ ์ธ๋ฑ์ค์ ์์๋ฅผ ์ ๊ฑฐํ๊ณ , ๋ค์ ์๋ ์์๋ค์ ์์ผ๋ก ์ด๋
- get(int index) : ์ง์ ๋ ์ธ๋ฑ์ค์ ์๋ ์์๋ฅผ ๋ฐํ
- set(int index, E element) : ์ง์ ๋ ์ธ๋ฑ์ค์ ์์๋ฅผ ์ ์์๋ก ๋ฐ๊ฟ
- size() : ๋ฆฌ์คํธ์ ์ ์ฅ๋ ์์์ ์๋ฅผ ๋ฐํ
- clear() : ๋ฆฌ์คํธ์ ๋ชจ๋ ์์๋ฅผ ์ ๊ฑฐ
- contains(Object o) : ๋ฆฌ์คํธ๊ฐ ํน์ ์์๋ฅผ ํฌํจํ๊ณ ์๋์ง ํ์ธ. ํฌํจํ๊ณ ์์ผ๋ฉด true๋ฅผ, ์๋๋ฉด false๋ฅผ ๋ฐํ
- indexOf(Object o) : ํน์ ์์๊ฐ ๋ฆฌ์คํธ ๋ด์์ ์ฒ์์ผ๋ก ๋ํ๋๋ ์์น์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํ. ๋ฆฌ์คํธ์ ์์๊ฐ ์์ผ๋ฉด -1์ ๋ฐํ
- lastIndexOf(Object o) : ํน์ ์์๊ฐ ๋ฆฌ์คํธ ๋ด์์ ๋ง์ง๋ง์ผ๋ก ๋ํ๋๋ ์์น์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํ
- toArray() : ๋ฆฌ์คํธ์ ์์๋ค์ ๋ฐฐ์ด๋ก ๋ณํํ์ฌ ๋ฐํ
- subList(int fromIndex, int toIndex) : ๋ฆฌ์คํธ์ ์ผ๋ถ๋ถ์ ๋ทฐ(view)๋ก ๋ฐํ
- iterator() : ๋ฆฌ์คํธ์ ์์๋ค์ ์ํํ ์ ์๋ Iterator ๊ฐ์ฒด๋ฅผ ๋ฐํ
- forEach(Consumer<? super E> action) : ๋ฆฌ์คํธ์ ๋ชจ๋ ์์์ ๋ํด ์ฃผ์ด์ง ์์ ์ ์ํ
- sort(Comparator<? super E> c) : ๋ฆฌ์คํธ๋ฅผ ์ฃผ์ด์ง ๋น๊ต์(comparator)์ ๋ฐ๋ผ ์ ๋ ฌ
- isEmpty() : ๋ฆฌ์คํธ๊ฐ ๋น์ด์๋์ง ์ฌ๋ถ๋ฅผ ํ์ธ. ๋น์ด์์ผ๋ฉด true, ๊ทธ๋ ์ง ์์ผ๋ฉด false๋ฅผ ๋ฐํ
์ฐ๊ฒฐ ๋ฆฌ์คํธ LinkedList
1. ๊ตฌ์ฑ์์
- ๋ ธ๋(Node) : LinkedList์ ๊ฐ ์์๋ ๋ ธ๋๋ก ๊ตฌํ๋จ. ๊ฐ ๋ ธ๋๋ ๋ฐ์ดํฐ์ ๋ค์ ๋ ธ๋(๋ฐ ์ด์ ๋ ธ๋)์ ๋ํ ์ฐธ์กฐ๋ฅผ ๊ฐ์ง
- ํค๋(Head)์ ํ ์ผ(Tail) : ๋ฆฌ์คํธ์ ์์ ๋ถ๋ถ์ ๊ฐ๋ฆฌํค๋ ํค๋์ ๋ ๋ถ๋ถ์ ๊ฐ๋ฆฌํค๋ ํ ์ผ์ด ์์. ์ด๊ฒ์ ๋ฆฌ์คํธ์ ์ฒ์๊ณผ ๋์ ์ ๊ทผ์ ์ฉ์ดํ๊ฒ ํจ
2. ์๋ ์๋ฆฌ
- ์ฐ๊ฒฐ ๊ตฌ์กฐ : LinkedList๋ ๋ ธ๋๋ค์ด ์๋ก ์ฐ๊ฒฐ๋์ด ์๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง. ๊ฐ ๋ ธ๋๋ ๋ค์ ๋ ธ๋์ ๋ํ ์ฐธ์กฐ(๊ทธ๋ฆฌ๊ณ ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ธ ๊ฒฝ์ฐ ์ด์ ๋ ธ๋์ ๋ํ ์ฐธ์กฐ)๋ฅผ ๊ฐ์ง๊ณ ์์
- ๋์ ํฌ๊ธฐ ์กฐ์ : ์์๊ฐ ์ถ๊ฐ๋๊ฑฐ๋ ์ ๊ฑฐ๋ ๋, ๋ ธ๋๋ค ์ฌ์ด์ ์ฐ๊ฒฐ์ด ์กฐ์ ๋จ. ๋ฆฌ์คํธ์ ํฌ๊ธฐ๋ ๋์ ์ผ๋ก ๋ณํจ
- ๋น ๋ฅธ ์ฝ์ ๊ณผ ์ญ์ : ํน์ ์์น์ ์ฝ์ ํ๊ฑฐ๋ ์ญ์ ํ ๋, ์ฐ๊ฒฐ๋ง ๋ณ๊ฒฝํ๋ฉด ๋๋ฏ๋ก ArrayList์ ๋นํด ๋ ๋น ๋ฆ
3, ์ฃผ์ ๋ฉ์๋
- add(E element) : ๋ฆฌ์คํธ์ ๋์ ์์๋ฅผ ์ถ๊ฐ
- add(int index, E element) : ์ง์ ๋ ์ธ๋ฑ์ค์ ์์๋ฅผ ์ถ๊ฐ
- remove(int index) : ์ง์ ๋ ์ธ๋ฑ์ค์ ์์๋ฅผ ์ ๊ฑฐ
- get(int index) : ์ง์ ๋ ์ธ๋ฑ์ค์ ์๋ ์์๋ฅผ ๋ฐํ
- set(int index, E element) : ์ง์ ๋ ์ธ๋ฑ์ค์ ์์๋ฅผ ์ ์์๋ก ๋ฐ๊ฟ
- size() : ๋ฆฌ์คํธ์ ์ ์ฅ๋ ์์์ ์๋ฅผ ๋ฐํ
- clear() : ๋ฆฌ์คํธ์ ๋ชจ๋ ์์๋ฅผ ์ ๊ฑฐ
- contains(Object o ): ๋ฆฌ์คํธ๊ฐ ํน์ ์์๋ฅผ ํฌํจํ๊ณ ์๋์ง ํ์ธ
- indexOf(Object o) : ํน์ ์์์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํ
- addFirst(E e) / offerFirst(E e): ๋ฆฌ์คํธ์ ์์ ๋ถ๋ถ์ ์์๋ฅผ ์ถ๊ฐ
- addLast(E e) / offerLast(E e): ๋ฆฌ์คํธ์ ๋ ๋ถ๋ถ์ ์์๋ฅผ ์ถ๊ฐ
- removeFirst() / pollFirst(): ๋ฆฌ์คํธ์ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ์ ๊ฑฐํ๊ณ ๋ฐํ. ๋ฆฌ์คํธ๊ฐ ๋น์ด์์ ๊ฒฝ์ฐ ์์ธ๋ฅผ ๋์ง๊ณ , pollFirst()๋ null์ ๋ฐํ
- removeLast() / pollLast(): ๋ฆฌ์คํธ์ ๋ง์ง๋ง ์์๋ฅผ ์ ๊ฑฐํ๊ณ ๋ฐํ. removeLast()๋ ๋ฆฌ์คํธ๊ฐ ๋น์ด์์ ๊ฒฝ์ฐ ์์ธ๋ฅผ ๋์ง๊ณ , pollLast()๋ null์ ๋ฐํ
- getFirst() / peekFirst(): ๋ฆฌ์คํธ์ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ๋ฐํํ์ง๋ง ์ ๊ฑฐํ์ง๋ ์์. getFirst()๋ ๋ฆฌ์คํธ๊ฐ ๋น์ด์์ ๊ฒฝ์ฐ ์์ธ๋ฅผ ๋์ง๊ณ , peekFirst()๋ null์ ๋ฐํ
- getLast() / peekLast(): ๋ฆฌ์คํธ์ ๋ง์ง๋ง ์์๋ฅผ ๋ฐํํ์ง๋ง ์ ๊ฑฐํ์ง๋ ์์. getLast()๋ ๋ฆฌ์คํธ๊ฐ ๋น์ด์์ ๊ฒฝ์ฐ ์์ธ๋ฅผ ๋์ง๊ณ , peekLast()๋ null์ ๋ฐํ
- iterator(): ๋ฆฌ์คํธ ์์๋ฅผ ์์ฐจ์ ์ผ๋ก ์ ๊ทผํ ์ ์๋ Iterator ๊ฐ์ฒด๋ฅผ ๋ฐํ
- descendingIterator(): ๋ฆฌ์คํธ ์์๋ฅผ ์ญ์์ผ๋ก ์ ๊ทผํ ์ ์๋ Iterator ๊ฐ์ฒด๋ฅผ ๋ฐํ
๋ฐฐ์ด ๋ฆฌ์คํธ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ๋น๊ต
๋ด๋ถ๊ตฌ์กฐ
ArrayList | ๋ด๋ถ์ ์ผ๋ก ํฌ๊ธฐ๊ฐ ๊ฐ๋ณ์ ์ธ ๋ฐฐ์ด์ ์ฌ์ฉํฉ๋๋ค. ๋ฐฐ์ด ์ธ๋ฑ์ค๋ฅผ ํตํด ์์์ ์ ๊ทผํ๊ธฐ ๋๋ฌธ์ ์์์ ๊ฒ์ ๋ฐ ์ ๊ทผ์ด ๋น ๋ฆ ๋๋ค. |
LinkedList | ๊ฐ ์์๊ฐ ๋ ธ๋ ํํ๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , ๊ฐ ๋ ธ๋๊ฐ ๋ค์ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ฅผ ๊ฐ๊ณ ์์ต๋๋ค. ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ธ ๊ฒฝ์ฐ, ๊ฐ ๋ ธ๋๋ ์ด์ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ ๊ฐ๊ณ ์์ต๋๋ค. |
์ฑ๋ฅ
ArrayList | ๊ฒ์: ์ธ๋ฑ์ค๋ฅผ ํตํ ๋น ๋ฅธ ์ ๊ทผ์ผ๋ก ๊ฒ์์ด ๋งค์ฐ ๋น ๋ฆ
๋๋ค. ์ฝ์ /์ญ์ : ๋ฆฌ์คํธ ์ค๊ฐ์ ์์๋ฅผ ์ฝ์ ํ๊ฑฐ๋ ์ญ์ ํ๋ ๊ฒฝ์ฐ, ๋ฐฐ์ด์ ์ฌ์กฐ์ ์ด ํ์ํ์ฌ ๋นํจ์จ์ ์ผ ์ ์์ต๋๋ค |
LinkedList | ๊ฒ์: ํน์ ์ธ๋ฑ์ค์ ์์์ ์ ๊ทผํ๊ธฐ ์ํด์๋ ๋ฆฌ์คํธ๋ฅผ ์์ฐจ์ ์ผ๋ก ํ์ํด์ผ ํ๋ฏ๋ก ๋๋ฆด ์ ์์ต๋๋ค. ์ฝ์ /์ญ์ : ๋ฆฌ์คํธ์ ์ด๋ ์์น์์๋ ์์๋ฅผ ๋น ๋ฅด๊ฒ ์ฝ์ ํ๊ฑฐ๋ ์ญ์ ํ ์ ์์ต๋๋ค. ํนํ ๋ฆฌ์คํธ์ ์์ ๋๋ ๋์์๋ ๋งค์ฐ ๋น ๋ฆ ๋๋ค. |
- ์ ๋ ฌ๋ ์ํ์ ๋ฐฐ์ด ๋ฆฌ์คํธ์์ ์์๋ฅผ log n ์๊ฐ์ ๊ฒ์ํ ์ ์๊ฒ ํ๋ ์๊ณ ๋ฆฌ์ฆ : ์ด์ง ํ์ ์๊ณ ๋ฆฌ์ฆ
๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ
ArrayList | ํฌ๊ธฐ๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์๋ก์ด ๋ฐฐ์ด์ ์์ฑํ๊ณ ๊ธฐ์กด ์์๋ฅผ ๋ณต์ฌํด์ผ ํ๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ํ์ง๋ง ๊ฐ ์์์ ๋ํ ์ค๋ฒํค๋๋ ์ ์ต๋๋ค. |
LinkedList | ๊ฐ ์์๊ฐ ์ถ๊ฐ ๋ฉ๋ชจ๋ฆฌ(ํฌ์ธํฐ)๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ฐ๋ผ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๋ ํด ์ ์์ต๋๋ค. |
์ฌ์ฉ ์ฌ๋ก
ArrayList | ์์์ ๋น๋ฒํ ์ ๊ทผ์ด ํ์ํ๊ณ , ํฌ๊ธฐ ๋ณ๊ฒฝ์ด ๋๋ฌธ ๊ฒฝ์ฐ์ ์ ํฉํฉ๋๋ค. |
LinkedList | ๋ฐ์ดํฐ์ ๋น๋ฒํ ์ถ๊ฐ ๋๋ ์ญ์ ๊ฐ ํ์ํ ๊ฒฝ์ฐ, ํนํ ์์์ด๋ ๋ ๋ถ๋ถ์์ ์์ ์ด ์ด๋ฃจ์ด์ง ๋ ์ ํฉํฉ๋๋ค. |
- ArrayList
- ์ฐ์๋ ๊ณต๊ฐ์ ์์๋ฅผ ์ ์ฅํจ. ๋ค์ ์์์ ๋ํ ๋งํฌ๊ฐ ํ์์์ผ๋ฏ๋ก ์์ ํ๋๋น ํ์ํ ๊ณต๊ฐ์ด ์๋์ ์ผ๋ก ์์
- ์ฅ์ : ๋น ๋ฅธ ์ธ๋ฑ์ค ๊ธฐ๋ฐ ์ ๊ทผ
- ๋จ์ : ํฌ๊ธฐ ๋ณ๊ฒฝ ๋ฐ ์ค๊ฐ ์ฝ์ /์ญ์ ์ ๋นํจ์จ์ฑ
- LinkedList
- ๊ณต๊ฐ์ ์ฐ์์ฑ ์์. ๋ค์ ์์์ ๋งํฌ๋ฅผ ์ํ ๊ณต๊ฐ์ด ์ถ๊ฐ๋ก ํ์ํจ.
- ์ฅ์ : ์ ๋์์์ ๋น ๋ฅธ ์ฝ์ /์ญ์
- ๋จ์ : ์ธ๋ฑ์ค๋ฅผ ํตํ ์ ๊ทผ์ ๋นํจ์จ์ฑ, ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ
๋ฆฌ์คํธ์ ์ฅ์ ๊ณผ ๋จ์
์ฅ์
๋์ ํฌ๊ธฐ ์กฐ์ : ๋ฆฌ์คํธ๋ ๋์ ์ผ๋ก ํฌ๊ธฐ๊ฐ ์กฐ์ ๋ฉ๋๋ค. ๋ฐ๋ผ์ ๋ฏธ๋ฆฌ ํฌ๊ธฐ๋ฅผ ์ง์ ํ ํ์๊ฐ ์์ผ๋ฉฐ, ์์๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ ๋ ๋ฆฌ์คํธ์ ํฌ๊ธฐ๊ฐ ์๋์ผ๋ก ์กฐ์ ๋ฉ๋๋ค.
์์ ์ ์ง: ๋ฆฌ์คํธ๋ ์์๋ค์ ์ถ๊ฐํ ์์๋๋ก ์ ์ฅํ๋ฉฐ, ๊ฐ ์์๋ ํน์ ์ธ๋ฑ์ค์ ์์นํฉ๋๋ค. ์ด๋ก ์ธํด ์์๊ฐ ์ค์ํ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋ ์ ์ฉํฉ๋๋ค.
์ค๋ณต ํ์ฉ: ๋ฆฌ์คํธ๋ ๋์ผํ ๊ฐ์ ๊ฐ์ง ์์๋ค์ ์ฌ๋ฌ ๊ฐ ํฌํจํ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ ์ ๊ทผ ๋ฐ ์กฐ์์ ์ ์ฐ์ฑ: ๋ฆฌ์คํธ๋ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ, ์ ๊ฑฐ, ๊ฒ์ํ๋ ๋ฑ์ ๋ค์ํ ์กฐ์์ ์ง์ํฉ๋๋ค. ํนํ ์ธ๋ฑ์ค๋ฅผ ํตํ ๋น ๋ฅธ ์ ๊ทผ์ด ๊ฐ๋ฅํ ArrayList๋ ๋ฐ์ดํฐ ๊ฒ์์ ์ ๋ฆฌํฉ๋๋ค.
๋จ์
๋นํจ์จ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ: ArrayList๋ ํฌ๊ธฐ ์กฐ์ ์ ์ถ๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉฐ, LinkedList๋ ๊ฐ ์์๋ง๋ค ์ถ๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ค๊ฐ ์ฝ์ /์ญ์ ์ ๋นํจ์จ์ฑ: ArrayList์์ ์ค๊ฐ์ ์์๋ฅผ ์ฝ์ ํ๊ฑฐ๋ ์ญ์ ํ๋ ๊ฒ์ ๋นํจ์จ์ ์ ๋๋ค. ๋ฆฌ์คํธ ์ ์ฒด๋ฅผ ์ฌ์กฐ์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฐ๋ฉด, LinkedList๋ ์ด ๋ถ๋ถ์์ ๋ ํจ์จ์ ์ ๋๋ค.
๋๋ค ์ ๊ทผ์ ๋นํจ์จ์ฑ: LinkedList๋ ์ธ๋ฑ์ค๋ฅผ ํตํ ๋๋ค ์ ๊ทผ์ด ๋นํจ์จ์ ์ ๋๋ค. ํน์ ์ธ๋ฑ์ค์ ์์์ ์ ๊ทผํ๊ธฐ ์ํด์๋ ๋ฆฌ์คํธ๋ฅผ ์ฒ์๋ถํฐ ์ํํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
์บ์ ํ์ฉ์ ๋นํจ์จ์ฑ: LinkedList๋ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฐ์์ ์ธ ๊ณต๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ง ์๊ธฐ ๋๋ฌธ์, CPU ์บ์๋ฅผ ํจ์จ์ ์ผ๋ก ํ์ฉํ๊ธฐ ์ด๋ ต์ต๋๋ค.
์ฐ๊ฒฐ๋ฆฌ์คํธ์ ํ์ฅ
๊ธฐ๋ณธ์ ์ธ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ถํธํจ์ ํด์ํ๊ธฐ ์ํ ํ์ฅ ๋ฒ์
1. ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ (Doubly Linked List)
- ํน์ง: ๊ฐ ๋ ธ๋๊ฐ ๋ ๊ฐ์ ํฌ์ธํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ํ๋๋ ์ด์ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๊ณ ๋ค๋ฅธ ํ๋๋ ๋ค์ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํต๋๋ค.
- ์ฅ์ : ์๋ฐฉํฅ์ผ๋ก์ ํ์์ด ๊ฐ๋ฅํ๋ฏ๋ก, ํน์ ์ํฉ์์ ํ์ ํจ์จ์ด ๊ฐ์ ๋ฉ๋๋ค. ๋ํ, ๋ ธ๋์ ์ฝ์ ๊ณผ ์ญ์ ๊ฐ ๋์ฑ ์ ์ฐํด์ง๋๋ค.
- ๋จ์ : ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํฉ๋๋ค(์ด์ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ).
2. ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ (Circular Linked List)
- ํน์ง: ๋ง์ง๋ง ๋ ธ๋๊ฐ ์ฒซ ๋ฒ์งธ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ํํ๋ก, ๋ฆฌ์คํธ์ ๋๊ณผ ์์์ด ์ฐ๊ฒฐ๋์ด ์์ต๋๋ค.
- ์ฅ์ : ๋ฆฌ์คํธ์ ๋์์ ์์์ผ๋ก์ ์ด๋์ด ๊ฐ๋จํด์ง๋ฉฐ, ์ํ ๊ตฌ์กฐ๋ฅผ ํ์๋ก ํ๋ ํน์ ์๊ณ ๋ฆฌ์ฆ์ ์ ํฉํฉ๋๋ค.
- ๋จ์ : ์ํ ๊ตฌ์กฐ๋ก ์ธํด ๋ฆฌ์คํธ์ ๋์ ์๋ณํ๋ ๊ฒ์ด ๋ณต์กํด์ง ์ ์์ต๋๋ค.
3. ์ ๋ ฌ๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ (Sorted Linked List)
- ํน์ง: ๋ ธ๋๋ค์ด ํน์ ๊ธฐ์ค์ ๋ฐ๋ผ ์ ๋ ฌ๋ ์์๋ก ์ ์ง๋๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋๋ค.
- ์ฅ์ : ํญ์ ์ ๋ ฌ๋ ์ํ๋ฅผ ์ ์งํ๋ฏ๋ก, ์ ๋ ฌ๋ ๋ฐ์ดํฐ์ ๋ํ ๋น ๋ฅธ ๊ฒ์์ด ๊ฐ๋ฅํฉ๋๋ค.
- ๋จ์ : ์ฝ์ ์ฐ์ฐ์ด ๋ ๋ณต์กํด์ง ์ ์์ต๋๋ค. ์ ์ ํ ์์น๋ฅผ ์ฐพ์ ์ฝ์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
4. ์๊ธฐ ์กฐ์ ๋ฆฌ์คํธ (Self-adjusting Linked List)
- ํน์ง: ๋ฐ์ดํฐ์ ์ ๊ทผํ ๋๋ง๋ค ํด๋น ๋ ธ๋๋ฅผ ๋ฆฌ์คํธ์ ์์ ๋ถ๋ถ์ผ๋ก ์ด๋์ํค๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋๋ค.
- ์ฅ์ : ์์ฃผ ์ ๊ทผํ๋ ์์์ ๋ํด ๋น ๋ฅธ ์ ๊ทผ์ด ๊ฐ๋ฅํด์ง๋๋ค.
- ๋จ์ : ๋ฐ์ดํฐ ์ ๊ทผ ์ ๋งค๋ฒ ๋ฆฌ์คํธ ๊ตฌ์กฐ๋ฅผ ์กฐ์ ํด์ผ ํ๋ฏ๋ก, ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
์ฐธ๊ณ ์๋ฃ : ใ์ฝ๊ฒ ๋ฐฐ์ฐ๋ ์๋ฃ๊ตฌ์กฐ with ์๋ฐใ
'๐๏ธ ์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ > ์๊ณ ๋ฆฌ์ฆ,์๋ฃ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ ๋ ฌ] ๊ณ ๊ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ(๋ณํฉ/ํต/ํ/์ ) (1) | 2023.11.21 |
---|---|
[์ ๋ ฌ] ๊ธฐ๋ณธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ(์ ํ/๋ฒ๋ธ/์ฝ์ ) (1) | 2023.11.21 |
[ํ] ์ฐ์ ์์ ํ : ํ (0) | 2023.11.21 |
[ํ] ๋ฐฐ์ด ๊ธฐ๋ฐ ํ์ ์ฐ๊ฒฐ๋ฆฌ์คํธ ๊ธฐ๋ฐ ํ (2) | 2023.11.21 |
[์คํ] ๋ฐฐ์ด ๊ธฐ๋ฐ ์คํ๊ณผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ๊ธฐ๋ฐ ์คํ (0) | 2023.11.21 |