5์ฅ. ์ฐ๊ฒฐ ๋ฆฌ์คํธ
EX) C์ธ์ด ํ๋ก๊ทธ๋จ ์คํ ์ค ๊ตฌ์กฐ์ฒด ๋ฉ๋ชจ๋ฆฌ ํ ๋น
int a, *p_a; float b, *p_b; p_a = (int*)malloc(sizeof(int)); p_b = (float*)malloc(sizeof(float)); *p_a = 10;
1. ๋ฆฌ์คํธ์ ๊ฐ๋
2. ๋ฐฐ์ด์ ์ด์ฉํ ๋ฆฌ์คํธ ๊ตฌํ
๋ฐฐ์ด์ ์ด์ฉํ์ฌ ๋ฆฌ์คํธ๋ฅผ ๊ตฌํํ ์๋ฃํ
๋ฐฐ์ด๋ก ๊ตฌ์ฑํ ๋ฆฌ์คํธ ์ค๊ฐ ์ธ๋ฑ์ค์ ์๋ฃ๊ฐ ์ฝ์ ๋๋ ๊ฒฝ์ฐ
๋ฐฐ์ด์ ์ด์ฉํ์ฌ ๋ฆฌ์คํธ๋ฅผ ๊ตฌํํ๋ฉด, ๋ ผ๋ฆฌ์ ์ธ ์์์ ํจ๊ป ๋ฌผ๋ฆฌ์ ์ธ ์์ ๋ํ ์ผ์ ํ๊ฒ ์ ์ง ๋๋ค. ์ด๋ก ์ธํด ์ค๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ด๋ ์ญ์ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธด๋ค๋ฉด ๋ค์ ์ธ๋ฑ์ค ์๋ฃํ๋ค์ ๋ฌผ๋ฆฌ์ ๊ณต๊ฐ์ด ๋ชจ๋ ๋ณ๊ฒฝ๋์ด์ผ ํ๋ฏ๋ก ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฐ๋ค. ๋ํ ๋ฉ๋ชจ๋ฆฌ ํ ๋น๋์ ๋ณํ๊ฐ ์๊ธธ์๋ ์์ผ๋ฏ๋ก ๊ถ์ฅ๋์ง ์๋๋ค.
3. ํฌ์ธํฐ๋ฅผ ์ด์ฉํ ๋ฆฌ์คํธ ๊ตฌํ
ํฌ์ธํฐ๋ฅผ ์ด์ฉํ ๋ฆฌ์คํธ ํํ
๋ฐ์ดํฐ์ ๊ฐ๊ณผ ์ฃผ์(ํฌ์ธํฐ)๋ฅผ ์ด์ฉํ ๋ฆฌ์คํธ ๊ตฌํ์ ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ผ๊ณ ํ๋ฉฐ ์ฐ๊ฒฐ๋ฆฌ์คํธ์ ๊ตฌ์ฑ ๋จ์๋ ๋ ธ๋(๋ฐ์ดํฐ์ ์ฃผ์) ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ์ฐ๊ฒฐ๋ฆฌ์คํธ์ ๋ ธ๋๊ฐ ์ฐ๊ฒฐ์ ํฌ์ธํฐ์ ์ฐ๊ฒฐ๋ก ๊ตฌํ๋๋ค. ๋ง์ง๋ง ๋ ธ๋๋ฅผ ์ ์ธํ ๋๋จธ์ง ๋ชจ๋ ๋ ธ๋์ ๋งํฌ๋ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ค์์ ์์นํ ๋ ธ๋์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํจ๋ค. ๋ง์ง๋ง ๋ ธ๋์ ๋งํฌ๋ ๋ ํฌ์ธํฐ(null pointer) ๋ก ํํํ๋ค.
4. ์ฐ๊ฒฐ ๋ฆฌ์คํธ์์ ๋ ธ๋์ ์ฝ์ ๊ณผ ์ญ์
์ฐ๊ฒฐ๋ฆฌ์คํธ์์์ ๋ํ์ ์ฐ์ฐ์ ์ฝ์ ๊ณผ ์ญ์ ์ด๋ค. ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ ์กฐํ ๋ฐ ๊ฒ์ ์์์ ํจ์จ์ ์ผ๋ฐ ๋ฆฌ์คํธ๋ณด๋ค ๋จ์ด์ง๋ค (์์ฐจ ์กฐํํด์ผ ํ๊ธฐ ๋๋ฌธ). ํ์ง๋ง ์ฝ์ ๊ณผ ์ญ์ ์์ ์ ๋ฆฌํ๋ฐ ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ ๋ฐ์ดํฐ์ ๋ฌผ๋ฆฌ์ ์ธ ์ฃผ์๊ฐ๊ณผ ๋ฐ์ดํฐ์ ๋ ผ๋ฆฌ์ ์ธ ์์๊ฐ ์ผ์นํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๊ฐ ๋ฐ๋ผ๋ณด๋ ๋ ธ๋์ ์ฃผ์๊ฐ๋ง ๋ณ๊ฒฝํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ด๋ค.
4-1. ๋ ธ๋์ ์ฝ์
์ฝ์ ๊ณผ ์ญ์ ์ฐ์ฐ ์ ์ฐ๊ฒฐ๋ฆฌ์คํธ
์ฝ์ ์ฐ์ฐ์ ๋ ธ๋๊ฐ ๋ฐ๋ผ๋ณด๋ ์ฃผ์๋ฅผ ๋๊ณ ์๋ก์ด ๋ ธ๋๊ฐ ๋ผ์ด๋๋ ํํ๋ก ์ด๋ฃจ์ด์ง๋ค.
๋ฐ์ดํฐ A ์ ๋ ธ๋์ ๋ฐ์ดํฐ C ์ฌ์ด์ ๋ ธ๋ ์ฌ์ด์ ์ฝ์ ์ฐ์ฐ์ด ์ผ์ด๋ ์ํฉ
4-2. ๋ ธ๋์ ์ญ์
์ญ์ ์ฐ์ฐ์ ํน์ ๋ ธ๋์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น ํด์ ํ๊ณ ๋ ธ๋ ์ฌ์ด์ ๋งํฌ๋ฅผ ์ญ์ ํ ๋ ธ๋์ ๋ค์ ๋ ธ๋์ ์ฃผ์๋ก ์ฐ๊ฒฐํ๋ค.
Head ๋ ธ๋๊ฐ ๋ฐ๋ผ๋ณด๋ ๋ฐ์ดํฐ A ์ญ์ ์ฐ์ฐ์ด ์ผ์ด๋ ์ํฉ
5. ์ฐ๊ฒฐ๋ฆฌ์คํธ์ ์ถ์ ์๋ฃํ
- LinkedList create_linkedList()
์ฐ๊ฒฐ๋ฆฌ์คํธ ๊ฐ์ฒด ์์ฑ - LinkedList add(data)
์ฐ๊ฒฐ๋ฆฌ์คํธ์ ๊ฐ์ฅ ๋ง์ง๋ง ๋ ธ๋์ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ค. - LinkedList insert(data)
์ฐ๊ฒฐ๋ฆฌ์คํธ์ ํน์ ์ธ๋ฑ์ค ๋ฒํธ ๋ค์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ๋ค. - data
-์ฐ๊ฒฐ๋ฆฌ์คํธ์ ํน์ ์ธ๋ฑ์ค์ ๊ฐ์ ๋ฐํํ๋ค.
ํธ์์ ์ฐ๊ฒฐ๋ฆฌ์คํธ ๋ด ๋ฐ์ดํฐ์ ์ค๋ณต์ ์๋ค๊ณ ๊ฐ์ ํ๋ค.
'๋ ธํธ > ์๋ฃ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฃ๊ตฌ์กฐ] 7. ํธ๋ฆฌ (0) | 2022.01.27 |
---|---|
[์๋ฃ๊ตฌ์กฐ] 6. ์ฐ๊ฒฐ๋ฆฌ์คํธ์ ์์ฉ (0) | 2022.01.27 |
[์๋ฃ๊ตฌ์กฐ] 4. ํ (0) | 2022.01.06 |
[์๋ฃ๊ตฌ์กฐ] 3. ์คํ (0) | 2022.01.06 |
[์๋ฃ๊ตฌ์กฐ] 2. ๋ฐฐ์ด (0) | 2021.12.20 |