Search

๋…ธ๋“œ์™€ ํฌ์ธํ„ฐ

๋…ธ๋“œ์™€ ํฌ์ธํ„ฐ

โ€ข
๋น„์ˆœ์ฐจํ‘œํ˜„: ๋ฐฐ์—ด์ฒ˜๋Ÿผ ์—ฐ์†๋œ ๊ณต๊ฐ„์ด ์•„๋‹ˆ๋ผ, ๋…ธ๋“œ๋“ค์ด ๋ฉ”๋ชจ๋ฆฌ ์—ฌ๊ธฐ์ €๊ธฐ์— ํฉ์–ด์ ธ ์žˆ์„ ์ˆ˜ ์žˆ๋Š” ํ‘œํ˜„ ๋ฐฉ์‹.
โ€ข
์—ฐ๊ฒฐํ‘œํ˜„: ๋…ธ๋“œ(๋ฐ์ดํ„ฐ) + ๋งํฌ(๋‹ค์Œ ๋…ธ๋“œ ์ฃผ์†Œ)๋ฅผ ์ด์šฉํ•ด ์ž๋ฃŒ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ์‹.
โ€ข
<์›์†Œ, ์ฃผ์†Œ> ๋…ธ๋“œ: ํ•œ ๋…ธ๋“œ๊ฐ€ ๋ฐ์ดํ„ฐ(์›์†Œ) ์™€ ๋‹ค์Œ ๋…ธ๋“œ์˜ ์ฃผ์†Œ(๋งํฌ) ๋ฅผ ํ•จ๊ป˜ ๊ฐ–๋Š” ๊ตฌ์กฐ.
โ—ฆ
๋ฐ์ดํ„ฐ ํ•„๋“œ(data field): ์‹ค์ œ ๊ฐ’(์›์†Œ)์„ ์ €์žฅ.
โ—ฆ
๋งํฌ ํ•„๋“œ(link field): ๋‹ค์Œ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฃผ์†Œ(ํฌ์ธํ„ฐ)๋ฅผ ์ €์žฅ.
โ—ฆ
ํฌ์ธํ„ฐ ๋ณ€์ˆ˜(pointer variable): ์–ด๋–ค ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก โ€œ์ฃผ์†Œโ€๋ฅผ ์ €์žฅํ•˜๋Š” ๋ณ€์ˆ˜(์˜ˆ: head, p, q).

์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ

โ€ข
์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ(Linked List): ๋…ธ๋“œ๋“ค์ด ๋งํฌ ํ•„๋“œ๋กœ ์„œ๋กœ ์—ฐ๊ฒฐ๋œ ์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ.
โ€ข
๊ณต๋ฐฑ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ(Empty Linked List): ์ €์žฅ๋œ ๋…ธ๋“œ๊ฐ€ ์—†๋Š” ๋ฆฌ์ŠคํŠธ. ๋ณดํ†ต head == null ๋กœ ํ‘œํ˜„.
โ€ข
๋„ ํฌ์ธํ„ฐ(Null Pointer): โ€œ์•„๋ฌด ๊ฒƒ๋„ ๊ฐ€๋ฆฌํ‚ค์ง€ ์•Š์Œโ€์„ ์˜๋ฏธํ•˜๋Š” ๊ฐ’. (C/C++: NULL, Java: null)
โ€ข
์  ์—ฐ์‚ฐ์ž(.): ๊ฐ์ฒด/์ฐธ์กฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋Œ€์ƒ์˜ ๋ฉค๋ฒ„ ์ ‘๊ทผ(์˜ˆ: node.next, node.data).

Java์˜ ์ฐธ์กฐ ๋ณ€์ˆ˜์™€ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ

โ€ข
Java์˜ ์ฐธ์กฐ ๋ณ€์ˆ˜(reference variable): ๊ฐ์ฒด ์ž์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฐธ์กฐ(์ฃผ์†Œ์ฒ˜๋Ÿผ ๋™์ž‘) ๋ฅผ ์ €์žฅ.
โ€ข
๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ(GC): ์–ด๋–ค ๊ฐ์ฒด๋„ ์ฐธ์กฐํ•˜์ง€ ์•Š๊ฒŒ ๋˜๋ฉด(๋„๋‹ฌ ๋ถˆ๊ฐ€ ์ƒํƒœ) ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ํšŒ์ˆ˜.