-
728x90๋ฐ์ํ
๋ฆฌ์คํธ
์์๋ฅผ ๊ฐ์ง ๋ฐ์ดํฐ ์งํฉ์ ๊ฐ๋ฆฌํค๋ ์ถ์์๋ฃํ (abstract data type) ์ผ๋ก, ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ด๋ ์๊ด ์๋ค. ๋ฆฌ์คํธ๋ ํฌ๊ฒ ๋๊ฐ์ง๋ก ๋๋๋๋ฐ, ์์ฐจ ๋ฆฌ์คํธ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๊ฐ ์๋ค.
๐คฆ๐ปโ๏ธ ์์ฐจ ๋ฆฌ์คํธ : ๋ฐฐ์ด์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํ๋ ๋ฆฌ์คํธ
์ฐ๊ฒฐ ๋ฆฌ์คํธ : ๋ฉ๋ชจ๋ฆฌ์ ๋์ ํ ๋น์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํ๋ ๋ฆฌ์คํธ๊ตฌํ ๋ฐฉ๋ฒ
- 1์ฐจ์ ๋ฐฐ์ด์ ํญ๋ณต๋ค์ ์์๋๋ก ์ ์ฅํ๋ค
- ๋ฐ์ดํฐ์ ์ข ๋ฅ์ ๊ตฌ์กฐ์ ๋ฐ๋ผ ๊ตฌ์กฐํ๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋ง๋ค์ด ๋ฐฐ์ด์ ์ ์ฅํ ์๋ ์๋ค
int [] L = {4,5,9,11 };
๋ฐ์ดํฐ ์ ๊ทผ ๋ฐฉ๋ฒ
๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํด ์ํ๋ ์์น์ ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๋ค
int a = L [1]; //L =5
์ฝ์ ์ฐ์ฐ
์ฝ์ ์์น ๋ค์์ ํญ๋ชฉ๋ค์ ๋ค๋ก ์ด๋ํด์ผ ํ๋ค
์ญ์ ์ฐ์ฐ
์ญ์ ์์น ๋ค์ ํญ๋ชฉ๋ค์ ์์ผ๋ก ์ด๋ํด์ผ ํ๋ค
๋ฌธ์ ์
- ๋จ์ ๋ฐฐ์ด์ ์ด์ฉํ ์์ฐจ๋ฆฌ์คํธ๋ฅผ ๊ตฌํํด ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ์๋ฃ์ ์ฝ์ / ์ญ์ ์ฐ์ฐ ๊ณผ์ ์์ ์ฐ์์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๋ฐฐ์ด์ ์ํด ์์๋ค์ ์ด๋์ํค๋ ์์ ์ด ํ์ํ๋ค
- ์์์ ๊ฐ์๊ฐ ๋ง๊ณ , ์ฝ์ /์ญ์ ์ฐ์ฐ์ด ๋ง์ด ์ผ์ด๋๋ฉด ์์ ์๊ฐ์ด ํฌ๊ฒ ์ฆ๊ฐํ๋ค
- ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ์ ํด์ ธ ์์ผ๋ฉด, ์ค์ ๋ก ์ฌ์ฉ๋ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ํฌ๊ฒ ํ ๋นํ์ฌ ๋ฉ๋ก๋ฆฌ ๋ญ๋น๊ฐ ๋ฐ์ํ๊ณ , ๋ฐ๋๋ก ๋ ์๊ฒ ์ ํด์ ธ์๋ค๋ฉด ๋ค์ ๋ฐฐ์ด์ ๋ณต์ฌํ๊ณ ๋ง๋๋ ์์ ์ ํด์ผํ๋ค
๋ฐ๋ผ์, ์ด๋ฐ ๋ฌธ์ ์ ์ ๋ฐ์์ํค์ง ์๊ธฐ ์ํด ์ฐ๊ฒฐ ๋ฆฌ์คํธ (Linked List) ๋ฅผ ํ์ฉํด์ผ ํ๋ค
์ฐ๊ฒฐ ๋ฆฌ์คํธ
ํน์ฑ
- ์๋ฃ์ ๋ ผ๋ฆฌ์ ์ธ ์์์ ๋ฉ๋ชจ๋ฆฌ ์์ ๋ฌผ๋ฆฌ์ ์ธ ์์๊ฐ ์ผ์นํ์ง ์๊ณ , ๊ฐ๋ณ์ ์ผ๋ก ์์นํ๊ณ ์๋ ๊ฐ ์์๋ฅผ ์ฐ๊ฒฐํ์ฌ ํ๋์ ์ ์ฒด์ ์ธ ์๋ฃ ๊ตฌ์กฐ๋ฅผ ์ด๋ฃฌ๋ค
- ๋งํฌ(์ฐธ์กฐ๊ฐ)๋ฅผ ํตํด ์์์ ์ ๊ทผํ๋ฏ๋ก, ์์ฐจ ๋ฆฌ์คํธ์์์ฒ๋ผ ๋ฌผ๋ฆฌ์ ์ธ ์์ค๋ฅด ๋ง์ถ๊ธฐ ์ํ ์์ ์ดํ์ ์๋ค
- ์๋ฃ๊ตฌ์กฐ์ ํฌ๊ธฐ๋ฅผ ๋์ ์ผ๋ก ์กฐ์ ํ ์ ์์ด์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ์ฉ์ด ํจ์จ์ ์ด๋ค
๊ธฐ๋ณธ ๊ตฌ์กฐ
<1> ๋ ธ๋
์ฐ๊ฒฐ ๋ฆฌ์คํธ์์ ํ๋์ ์์๋ฅผ ํํํ๋ building block
- ๋ฐ์ดํฐ ํ๋ :์์๊ฐ ์ ์ฅ (์์์ ์ข ๋ฅ๋ ํฌ๊ธฐ์ ๋ฐ๋ผ ๊ตฌ์กฐ๋ฅผ ์ ์ํ์ฌ ์ฌ์ฉํจ)
- ๋งํฌํ๋ : ๋ค์ ๋ ธ๋์ ์ฐธ์กฐ๊ฐ ์ ์ฅ
<2> ํค๋
์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์ฒซ ๋ ธ๋์ ๋ํ ์ฐธ์กฐ๊ฐ์ ๊ฐ๊ณ ์์
๐งธTail ์ด ์์ผ๋ฉด ,๋ง์ง๋ง ์์๋ฅผ ์ฐพ๊ธฐ ์ํด์๋ Head ๋ถํฐ iterate ๋ฌ์ผ ํจ. ๋ฐ๋ผ์ tail ์ ๋ํด์ ๊ด๋ฆฌํ ์๋ ์๋ค.
<1> ๋จ์ ์ฐ๊ฒฐ๋ฆฌ์คํธ
Singly Linked List
์ฐ๊ฒฐ ๊ตฌ์กฐ
๋งํฌ๋ฅผ ํ๊ฐ๋ง ์ ์งํ๋ ๋ฆฌ์คํธ
- ํค๋๊ฐ ๊ฐ์ฅ ์์ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๊ณ , ๋งํฌํ๋๊ฐ ์ฐ์์ ์ผ๋ก ๋ค์ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํจ๋ค
- ๋งํฌ๊ฐ null ์ธ ๋ ธ๋๊ฐ ์ฐ๊ฒฐ๋ฆฌ์คํธ์ ๊ฐ์ฅ ๋ง์ง๋ง ๋ ธ๋์ด๋ค
์ฝ์
Case 1: Empty
๊ณต๋ฐฑ ๋ฆฌ์คํธ์ 'A' ๋ฅผ ์ถ๊ฐํ ๋
Case 2: !Empty
- ์ฒซ๋ฒ์งธ์ ์ฝ์ 'A' ๋ฅผ ์์๋ก ๊ฐ๊ณ ์๋ ๋ฆฌ์คํธ์ ์ฒซ๋ฒ์งธ์ 'C' ๋ ธ๋๋ฅผ ์ฝ์ ํ ๋
2. ๋ง์ง๋ง์ ์ฝ์ 'C', 'A'๋ฅผ ์์๋ก ๊ฐ๊ณ ์๋ ๋ฆฌ์คํธ์ ๋ง์ง๋ง์ 'D' ๋ ธ๋๋ฅผ ์ฝ์ ํ ๋
3. ์ค๊ฐ์ ์ฝ์ ํ ๋ 'C', 'A', 'D' ๋ฅผ ์์๋ก ๊ฐ๊ณ ์๋ ๋ฆฌ์คํธ์ ๋๋ฒ์งธ์ 'B' ๋ ธ๋๋ฅผ ์ฝ์ ํ ๋
์ญ์
Case 1: ์ค๊ฐ์ ์์ ์ญ์ 'A' , 'B', 'C', 'D' ๋ฅผ ์์๋ก ๊ฐ๊ณ ์๋ ๋ฆฌ์คํธ์ 'B' ๋ ธ๋๋ฅผ ์ญ์ ํ ๋
Case 2: ์ญ์ ํ๋ ค๋ ๋ ธ๋์ ์์ด head ์ผ ๊ฒฝ์ฐ 'C', 'A', 'D' ๋ฅผ ๊ฐ์ง๊ณ ์ใด๋ ๋ฆฌ์คํธ์ 'C'๋ฅผ ์ญ์ ํ ๋
์ฅ๋จ์
- ์ฅ์ : ๊ด๋ฆฌํ ๋งํฌ๊ฐ ํ๋๋ฐ์ ์๊ธฐ ๋๋ฌธ์ ์๋์ ์ผ๋ก ๊ด๋ฆฌ๊ฐ ์ฝ๋ค
- ๋จ์ : ์ญ์ ์ ์ญ์ ํ๋ ค๋ ๋ ธ๋์ ์ด์ ๋ ธ๋๋ฅผ ๋ค์ ๋ ธ๋์ ์ฐธ์กฐ๊ฐ์ ๊ฐ๋ฆฌํค๋๋ก ์์ ํด์ผํจ
728x90๋ฐ์ํ'๐ STUDY > JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
1์ฐจ์ ๋ฐฐ์ด (0) 2022.05.18 Tree (0) 2022.05.18 QUEUE (0) 2022.05.18 ์บก์ํ (0) 2022.05.17 ๋คํ์ฑ (0) 2022.05.17 ๋๊ธ