๐Linked List
ArrayList์ ๋ค๋ฅด๊ฒ element๊ฐ์ ์ฐ๊ฒฐ์ ์ด์ฉํด์ List๋ฅผ ๊ตฌํํ ๊ฒ
linked list์์ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ์ฐ๊ฒฐ์ด ๋ฌด์์ธ๊ฐ๋ฅผ ํ์
ํ๋ ๊ฒ!!
ArryaList์์๋ element๋ผ๋ ์ด๋ฆ์ ์ฌ์ฉํ์ง๋ง, Linked List์ ๊ฐ์ด ์ฐ๊ฒฐ๋ element๋ค์ Node, ๋ง๋
ํน์ Vertex, ์ ์
์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
Node๋ ์ค์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ํ๋์ ๋จ์์ด๋ฉฐ, Link๋ ๋
ธ๋๊ฐ์ ์์น์ ๋ณด๋ฅผ ์ ์ฅํ์ฌ ์๋ก ์ฐ๊ฒฐํด์ค ์ ์๋ ์ฐ๊ฒฐ๊ณ ๋ฆฌ
Linked List๊ฐ ์คํ๋ ๋ ์ด๋ฏธ์ง
์ด๋ฏธ์ง ์ถ์ฒ : wikipedia
Arraylist vs Linkedlist
Arraylist์ Linkedlist ๋น๊ต ์ด๋ฏธ์ง
Node
๋
ธ๋๋ ์๋ฃ์ ๋ค์ ๋
ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ์ฐธ์กฐ๊ฐ์ผ๋ก ๊ตฌ์ฑ
Linked List ๊ตฌํ
์ด๊ธฐํ(init) / ์ฝ์
(insert) / ์ญ์ (Remove) ์์
ํ์
ex) ์๋ฐ์คํฌ๋ฆฝํธ์์ ์๊ฐํ ์ ์๋ Linked List๋ array๊ฐ ์๋ค. ๋ฐ๋ผ์ array ๋ฉ์๋๋ฅผ ์ด์ฉํด์ array.push()๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ ์ ์๊ณ , array.splice()๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ ์ ์๋ค.
Linked List ์ด๊ธฐํ
๋
ธ๋๋ฅผ ์ ๊ทผํ๊ธฐ ์ํด์๋ ๋งจ ์ฒ์ ๋
ธ๋์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํฌ ๋
ธ๋๊ฐ ํ์
์ฒซ๋ฒ์งธ ๋
ธ๋๋ฅผ Head
ํํ / ๋ง์ง๋ง ๋
ธ๋๋ฅผ Tail
ํํ
์ด๊ธฐํ ๊ณผ์ ์์ ๋ค์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ฅผ null๋ก ์ค์
Linked List ๋ฉ์๋
find() : head๋
ธ๋๋ถํฐ ์ฐจ๋ก๋ก ํด๋น item์ ๊ฒ์ํ๋ฉด์ ์ฐพ๊ณ ์ฐพ์ผ๋ฉด ํด๋น ๋
ธ๋ ๋ฐํ
insert() : find()๋ฉ์๋๋ก ์ฐพ์ ๋
ธ๋ ๋ค์ ์๋ก์ด ๋
ธ๋๋ฅผ ์ฐ๊ฒฐ
But ์ค๋ณต๊ฐ์ ํ์ฉํ๊ธฐ ๋๋ฌธ์ ์ค๋ณต๋ ๊ฐ์ ๋ฃ๋ค๋ณด๋ฉด ์ฒ์ ์ฐพ์๋ธ ๋
ธ๋ ๋ค์ ์ฐ๊ฒฐํ๋ ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์๋ค.
first() : head๋
ธ๋๋ถํฐ ์ฐจ๋ก๋ก ํด๋น item์ ๊ฒ์ํ๋ฉด์ ์ฐพ๊ณ ์ฐพ์ผ๋ฉด ํด๋น ๋
ธ๋ ๋ฐํ
append() : ๋งจ ๋ค์ ๋
ธ๋๋ฅผ ์ถ๊ฐ
next() : ๋ค์์ ์ฐ๊ฒฐํ ๋
ธ๋ ๊ฒ์
delete() : ํ์ฌ ํด๋น ๋
ธ๋๋ฅผ ์ญ์
remove() : ์ญ์ ํ ๋
ธ๋ ๋ฐ๋ก ์ง์ ์ ์๋ ๋
ธ๋๋ฅผ ์ฐพ์ ์ฐ๊ฒฐ์ ๋์ด๋ฒ๋ฆฌ๋ ๊ฒ์ผ๋ก ์ญ์ ์ฒ๋ฆฌ
์ฅ์ : ๋
ธ๋์ ํฌ์ธํฐ๋ฅผ ํตํด์ ๋ชจ๋ ๋ฐ์ดํฐ์ ์ฐธ์กฐ๊ฐ ๊ฐ๋ฅ, ๋งํฌ ์ด๋์ ํตํ ์ ์ฐํ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅ
๋จ์ : ๋ฐ์ดํฐ์ ์์น๋ฅผ ์์๋ ๋ฐ๋ก ์ ๊ทผ ๋ถ๊ฐ, ์ ๋ ฌ์๋๊ฐ ๋๋ฆฌ๋ค.