Doubly Linked List - Data-Structure-Study/java-datastructure GitHub Wiki
Doubly Linked List
Author: Dion๐ฑ, Hamill๐
Doubly Linked List์ ํํ
Singly Linked List์๋ ๋ค๋ฅด๊ฒ Node๊ฐ ์ด์ Node์ ์ฐธ์กฐ ๊ฐ์ ๊ฐ์ง๊ณ ์๋ค.
Doubly Linked List์ ์ฅ๋จ์
-
์ฅ์
- ์ญ๋ฐฉํฅ ํ์์ด ๊ฐ๋ฅํด์ง
- index ํ์์ ํ ๋, ํญ์ ์ ๋ฐฉํฅ์ผ๋ก๋ง ํ์์ ํ๋๋ฐ, ์ญ๋ฐฉํฅ ํ์์ด ๊ฐ๋ฅํด์ ธ์ ํ์ํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ด ์ ๋ฐ์ผ๋ก ์ค์ด๋ค์์
- ์ญ๋ฐฉํฅ ํ์์ด ํจ์จ์ด ์ข์์ ธ์, ์ํด์์ด ์ญ๋ฐฉํฅ ํ์์ด ๊ฐ๋ฅํฉ๋๋ค.
-
๋จ์
- node๊ฐ payload๋ฅผ 2๊ฐ๋ฅผ ๊ฐ์ง๊ณ ์์ด์ ๋ฐ์ดํฐ๊ฐ ์ปค์ง๋ค.
- Singly Linked List์ ๋นํด์ ๊ตฌํ์ด ๋ณต์กํ๋ค.
-
Doubly linked list
- ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ์์ ๊ฐ ๋ ธ๋๋ ๋ค์ ๋ ธ๋ ๋งํฌ ์ธ์ ์์์์ '์ด์ ' ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ 2 ๋ฒ์งธ ๋งํฌ ํ๋๋ฅผ ํฌํจํ๋ค.
- ์ด ๋ ๋งํฌ๋ 'forward(์ ๋ฐฉ)'๊ณผ 'backwards(ํ๋ฐฉ)' ๋๋ 'next(๋ค์)'๊ณผ 'prev(previous ์ด์ )'์ผ๋ก ๋ถ๋ฆด ์ ์๋ค
์ ์ ๊ฐ, ๋ค์ ๋ ธ๋๋ก ํฅํ๋ ๋งํฌ, ์ด์ ๋ ธ๋๋ก ๊ฐ๋ ๋งํฌ 3 ๊ฐ์ ํ๋๊ฐ ํฌํจ๋ ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ -
๋ง์ ํ๋ ์ด์ ์ฒด์ ๋ active processes, ์ค๋ ๋ ๋ฐ ๊ธฐํ ๋์ ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ ์งํ๊ธฐ ์ํด ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
-
Doubly linked vs. singly linked
- ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ๋ ธ๋ ๋น ๋ ๋ง์ ๊ณต๊ฐ์ ํ์๋ก ํ๋ฉฐ (XOR ๋งํฌ๋ฅผ ์ฌ์ฉํ์ง ์๋ ํ), ๊ธฐ๋ณธ ์์ ์ ๋ ๋น์ธ์ง๋ง, ์๋ฐฉํฅ์ผ๋ก ๋ฆฌ์คํธ์ ๋น ๋ฅด๊ณ ์ฝ๊ฒ ์์ฐจ์ ์ผ๋ก ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์ ์กฐ์ํ๊ธฐ๊ฐ ๋ ์ฌ์ด ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
- ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ์์๋ ํด๋น ๋ ธ๋์ ์ฃผ์๋ง ์ฃผ์ด์ง ์ผ์ ํ ์์ ์์ ๋ ธ๋๋ฅผ ์ฝ์ ํ๊ฑฐ๋ ์ญ์ ํ ์ ์๋ค.
- ๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์์ ๋์ผํ ์์ ์ ์ํํ๋ ค๋ฉด ํด๋น ๋ ธ๋์ ๋ํ ํฌ์ธํฐ์ ์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ฉฐ, ์ด ์ฃผ์๋ ์ ์ฒด ๋ฆฌ์คํธ์ ํธ๋ค(์ฒซ ๋ฒ์งธ ๋ ธ๋์ ๊ฒฝ์ฐ) ๋๋ ์ด์ ๋ ธ๋์ ๋งํฌ ํ๋ ์ค ํ๋์ฌ์ผ ํ๋ค.
XOR Linked List
- ์ด๋ ต๋ค...
Doubly Linked List ์ ์ถ์์๋ฃํ(ADT)
- Node ์์ฑ
- ์ค๋ช : ๋ ธ๋๋ฅผ ์์ฑํ๋ค.
- ๋ฉ์๋ ๋ช : constructor
- ๋งค๊ฐ๋ณ์ :
- ๋ฆฌํด ๊ฐ :
- Node ์ถ๊ฐ
- ์ค๋ช : Node๋ฅผ ๋งจ ๋ค์ ์ถ๊ฐํ๋ค.
- ๋ฉ์๋ ๋ช : add
- ๋งค๊ฐ๋ณ์: Node node
- ๋ฆฌํด ๊ฐ: void
- Node ์ฝ์
- ์ค๋ช : ๋ ธ๋๋ฅผ ์ค๊ฐ์ ์ฝ์ ํ๋ค.
- ๋ฉ์๋ ๋ช : insert
- ๋งค๊ฐ๋ณ์ : int input
- ๋ฆฌํด ๊ฐ : void
- Node ์ญ์
- ์ค๋ช : ํด๋นํ๋ Node๋ฅผ ์ฐพ์์ ์ ๊ฑฐํ๋ค. || ํด๋นํ๋ Index์ Node๋ฅผ ์ฐพ์์ ์ ๊ฑฐํ๋ค.
- ๋ฉ์๋ ๋ช : remove
- ๋งค๊ฐ๋ณ์: Node node, int index
- ๋ฆฌํด ๊ฐ: void
- Node ํ์
- ์ค๋ช : ํด๋นํ๋ Node๋ฅผ ์ฐพ์์ index๋ฅผ ๋ฐํํ๋ค.
- ๋ฉ์๋ ๋ช : search
- ๋งค๊ฐ๋ณ์: Node node, int index
- ๋ฆฌํด ๊ฐ: int index, Node node
- List ๊ฐ์
- ์ค๋ช : ๋ ธ๋์ ๊ฐ์๋ฅผ ๋ฐํํ๋ค.
- ๋ฉ์๋ ๋ช : size
- ๋งค๊ฐ๋ณ์ :
- ๋ฆฌํด ๊ฐ : int
- Node ์ธ๋ฑ์ค ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
- ์ค๋ช : ํด๋นํ๋ index์ Node๋ฅผ ๋ฐํํ๋ค.
- ๋ฉ์๋ ๋ช : search
- ๋งค๊ฐ๋ณ์: int index
- ๋ฆฌํด ๊ฐ: Node node
- Node Iterator
- ๋ค์ Node๊ฐ ์๋์ง ์ฌ๋ถ
- Node previous
https://opentutorials.org/module/1335/8941
์ค๋์ ์๊ฐ
-
Hamill
- ์ธ์ ์ถฉ๋น์ด ์๊ธ(๋ด๊ฐ ์ค๋ ์ค๋ ํ๊ธฐ ์ํด)
- ์ค๋ ๋๋ฌด ์ด์ฌํ ํด์ ์๋ ๋ฐฐํฌ ๋ชปํ ๋ฏ
- ์ผ์ฃผ์ผ์ ํ๋์ฉ ์๋ฃ ๊ตฌ์กฐ์ ๋ํด ์๊ฐํ๊ณ ๊ตฌํํด๋ณด๋ ์๊ฐ์ ๊ฐ์ก๋๋ ๊ตฌํํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์์ง ์์ ๊ฒ ๊ฐ์(๋ฌผ๋ก ๊ตฌํ ์ฝ๋๋ ์ ํํ ์๋ฆฌ๋ ์์ด๋ฒ๋ฆด ๊ฑฐ ๊ฐ์ง๋ง)
- ์ข์ ์คํฐ๋ ์ฌ๋ก๋ฅผ ์ฐธ๊ณ ํด์ ์ข์ ์คํฐ๋๊ฐ ๋์ผ๋ฉด ํฉ๋๋ค
-
Dion
- ์๋ฒ๋ฃจ์ ์ฐ๋ฝ์ด ์์ด์ ์๋ฌด๋ฃฉ...
- ์ค๋ ์์ด๋ฆฌ ์กธ๋ฆด๊น์...
- ๊ตฌํํด๋ณด๋ฉด์ ์ด๋ ๊ฒ ๊ตฌํํ ์ ์๊ฒ ๊ตฌ๋๋ฅผ ๋๊ผ์ด์.
- Linked List๊ฐ ์ข ๋ ๊ตฌ์ฒด์ ์ผ๋ก ๋จธ๋ฆฌ์ ๋ค์ด์์ด์.