6. Structures
๊ตฌ์กฐ์ฒด๋ ํ๋์ ์ด๋ฆ์ผ๋ก ๋ถ๋ฆด ์ ์๋ ์๋ก ๋ค๋ฅธ ํ์ ์ ๋ณ์๋ค์ ๋ชจ์์ด๋ค(PASCAL์์๋ records). ๊ตฌ์กฐ์ฒด๋ ํฐ ํ๋ก๊ทธ๋จ์์ ์ฌ๋ฌ ๋ณ์๋ค์ ๋ชจ์์ ํ๋์ ๋ ๋ฆฝ๋ ์์ผ๋ก ์ทจ๊ธํ๊ฒ ํด์ฃผ๋ฏ๋ก ๋ณต์กํ ์๋ฃ๋ฅผ ๋ค๋ฃจ๋ ๊ฒ์ด ์ฌ์์ง๋ค.
ํธํ ์๊ฐํ๋ฉด ๊ฐ์ฒด๋ DB์ ํ ROW๋ผ๊ณ ์๊ฐํ๋ฉด ๋๊ฒ ๋ค.
6.1. Basics of Structures
๊ตฌ์กฐ์ฒด ์ ์ธ
์๋ฐ๋ ํ์ ์คํฌ๋ฆฝํธ์ ์ธํฐํ์ด์ค ๋ฆฌํฐ๋ด๊ณผ ๊ฐ๋ค.
struct
(type) : ๋ช
๋ น์ด๋ ๊ตฌ์กฐ์ฒด์ ์์์ ๋ํ๋ธ๋ค.
point
(name) : ๊ตฌ์กฐ์ฒด์ ์ด๋ฆ์ struct
๋ค์ ์จ๋ค.
x,y
(member) :๊ตฌ์กฐ์ฒด์ ์ํ๋ ๋ณ์๋ค์ ๋ฉค๋ฒ๋ผ๊ณ ๋ถ๋ฅด๊ณ {}์์์ ๋ณ์์ฒ๋ผ ์ ์ธํ๋ค.
๋ฉค๋ฒ์ ๊ตฌ์กฐ์ฒด์ ์ด๋ฆ์ ์๋ฐํ ๊ตฌ๋ถ๋๊ธฐ ๋๋ฌธ์ ๊ฐ์ ์ด๋ฆ์ด์ด๋ ์๊ด์๋ค. ๋ ๊ตฌ์กฐ์ฒด์ ์ด๋ฆ์ด ์ผ์ข ์ ๋ค์์คํ์ด์ค์ด๊ธฐ ๋๋ฌธ์ ๋์ผํ ๋ฉค๋ฒ๋ช ์ ๋ค๋ฅธ ๊ตฌ์กฐ์ฒด์์ ์ ์ธํด๋ ๋ฌธ์ ์๋ค.
๊ตฌ์กฐ์ฒด type์ ์ ์ธ๊ณผ ๊ตฌ์กฐ์ฒด๋ณ์ ์ ์ธ
์ด๋ ๊ฒ ํ๋ฉด ํด๋น ๊ตฌ์กฐ({...}
)๋ฅผ ๊ฐ๋ ๊ตฌ์กฐ์ฒด๋ฅผ 3๊ฐ(x,y,z
) ์ ์ธํ ๊ฒ์ด๋ค.
๊ตฌ์กฐ์ฒด type๋ง ์ ์ธ
์ด๊ฑด ์ด๋ฐ๊ฐ ์ฐ๋ ๊ฑธ๊น?
์ ์ธ๋ ๊ตฌ์กฐ์ฒด type์ ๊ฐ๋ ๋ณ์ ์ ์ธ
์ด๋ ๊ฒ ๋๋ฉด ์์ ์ ์ธํ point
์ ๊ตฌ์กฐ์ ๊ฐ์ ๋ณ์ pt
๊ฐ ๋ง๋ค์ด์ง๋ค.
์ ์ธ๋ ๊ตฌ์กฐ์ฒด type์ ๊ฐ๋ ๋ณ์ ์ ์ธ๊ณผ ํ ๋น
๊ตฌ์กฐ์ฒด ๋ฉค๋ฒ์ ์ ๊ทผํ๋ ๋ฒ
๊ตฌ์กฐ์ฒด์ด๋ฆ.๋ฉค๋ฒ์ด๋ฆ
์์ผ๋ก .
์ด๋ผ๋ ๋ฉค๋ฒ์ฐ์ฐ์๋ฅผ ์ด์ฉํด์ ๊ตฌ์กฐ์ฒด์ ์ด๋ฆ๊ณผ ๋ฉค๋ฒ ์ด๋ฆ์ ์ฐ๊ฒฐ์ํจ๋ค.
sqrt ๋ฌด์จ ๋ฌธ๋ฒ์ด์์?
๊ตฌ์กฐ์ฒด์ ๊ตฌ์กฐ์ฒด๋ ์์ ์ ์๋ค(๊ฐ์ฒด์์ ๊ฐ์ฒด์ฒ๋ผ)
๋ฉค๋ฒ๋ก ๊ตฌ์กฐ์ฒด๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ตฌ์กฐ์ฒด์ type์ ๊ฐ๋ ๋ณ์์ ์ ๊ทผ
6.2. Structures and Functions
๊ตฌ์กฐ์ฒด๋ก ํ ์ ์๋ ์ฐ์ฐ์ Copy, Assignment, ๊ทธ๋ฆฌ๊ณ &๋ก ๊ตฌ์กฐ์ฒด์ ์ฃผ์๋ฅผ ๋ฆฌํดํ๋ ๊ฒ๋ฐ์ ์๋ค. Copy์ Assignment๋ ํจ์๋ก ์ธ์๋ฅผ ๋๊ธฐ๊ฑฐ๋ ๊ฐ์ ๋ฐ๋ ๊ฒ์ ํฌํจํด์ ๋ช ์นญํ๋ ๊ฒ์ด๋ค.
๊ตฌ์กฐ์ฒด๋ฅผ ์ธ์๋ก ๋ฐ์ ์ฐ์ฐ์ ํ๋ ํจ์๋ฅผ ์ฌ์ฉํด๋ณด์. ์ต์ ์ธ๊ฐ์ง ์ ๊ทผ ๋ฐฉ๋ฒ์ด ์๋ค. 1. ๋
๋ฆฝ์ ์ผ๋ก ์์๋ฅผ ๋ณด๋ด๊ฑฐ๋(sqrt(pt.x)
) 2. ํ๋์ ๊ตฌ์กฐ์ฒด๋ฅผ ๋ณด๋ด๊ฑฐ๋(sqrt(pt)
) 3. ํฌ์ธํฐ๋ก ๋ณด๋ด๋ ๋ฐฉ๋ฒ(sqrt(&pt)
)
๋๊ฐ์ ์ ์๋ฅผ ๋ฐ์ point๋ผ๋ ๊ตฌ์กฐ์ฒด ๋ฆฌํด
makepoint
๋ ์ด๋ ํ ๊ตฌ์กฐ์ฒด์ ์ด๊ธฐํ๋ ๋ฉค๋ฒ์ ์ด๋ค ๊ฐ์ ๋ฃ๋ ํจ์๋ก ์ฌ์ฉํ ์ ์๋ค.
ํจ์๋ฅผ ํตํด ๊ตฌ์กฐ์ฒด์ ์ด๊ธฐํ, ๋ฉค๋ฒ์ ๊ฐ ํ ๋น
๊ตฌ์กฐ์ฒด๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๋ฐ๋ ํจ์
์ฌ๊ธฐ์๋ ๊ตฌ์กฐ์ฒด๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๋ฐ๊ณ ๊ตฌ์กฐ์ฒด๋ฅผ ๋ฆฌํดํด์ค๋ค.
๋งค๊ฐ๋ณ์๋ก ๊ตฌ์กฐ์ฒด์ ๊ตฌ์กฐ์ฒด๋ฅผ ๋ฉค๋ฒ๋ก๊ฐ๋ ๊ตฌ์กฐ์ฒด๋ฅผ ๋ฐ๋ ํจ์
๊ทธ๋ฐ๋ฐ ์ฌ๋์ ๋ฐ๋ผ์ ์ผ์ชฝ ์๋์ ์๋์ ์ pt2
๋ก ๋ฃ์ ์๋ ์์ผ๋ rect
ํ ๋ณ์๋ฅผ ๋ฐ์์ ์ผ์ชฝ ์๋์ ์ ์ pt1
์ผ๋ก ๋ฃ๋, ์ผ์ข
์ ํ์คํ ํจ์๋ฅผ ๋ง๋ค์ด๋ณด์.
ํ์คํ(canonical) ํจ์
๊ตฌ์กฐ์ฒด์ ํฌ์ธํฐ
๊ตฌ์กฐ์ฒด์ ํฌ์ธํฐ๋ ์ผ๋ฐ์ ์ธ ๋ฐฉ์๊ณผ ๊ฐ๋ค.
ํท๊ฐ๋ฆด ์๋ ์์ผ๋ ์ ๋ฆฌํ๊ณ ๊ฐ์. pp
๋ ํฌ์ธํฐ์ด๊ณ (*
) ํด๋น ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ์ฃผ์์ ์ค์ ๊ฐ์ point
๋ผ๋ ํ์ ๊ฐ์ง ๊ตฌ์กฐ์ฒด์ด๋ค.
pp
๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ข
์ ๋๋ฏธ๋ณ์๋ฅผ ๋ง๋ค์ด์ค์ ํฌ์ธํฐ์ ํ ๋น์ ํด์ค์ผํ๋ค.
ํฌ์ธํฐ๋ก๋ถํฐ ๊ตฌ์กฐ์ฒด ๋ฉค๋ฒ์ ์ ๊ทผ
๋ง์ฝ p
๊ฐ ํฌ์ธํฐ๋ผ๋ฉด ->
์ฐ์ฐ์๋ฅผ ํตํด์ (*p).๋ฉค๋ฒ
์ ๊ฐ์ ํจ๊ณผ๋ก p->๋ฉค๋ฒ
๋ฅผ ์ธ ์ ์๋ค.
๊ทธ๋์ ๋ค์๊ณผ ๊ฐ์ด ํ์ฉํ ์ ์๋ค.
๊ตฌ์กฐ์ฒด ์ฐ์ฐ์ .
, ->
๋ ํจ์๋ฅผ ๋ถ๋ฅด๊ธฐ ์ํ ()
, ์ธ๋ฑ์ฑ์ ์ํ []
๊ณผ ํจ๊ป ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ ์ฐ์ฐ์์ด๋ค.
๊ทธ๋์
์ ๊ฐ์ ์ ์ธ์ด ์์ผ๋ฉด ++p->len
๋ ++(p->len)
๊ณผ ๊ฐ์ ์๋ฏธ์ด๋ฏ๋ก p๊ฐ ๊ฐ๋ฆฌํค๋ ์ฃผ์์ ๊ตฌ์กฐ์ฒด์ ๋ฉค๋ฒ len์ 1์ฆ๊ฐ ์ํจ๋ค.
*p->str
์ ์ฌ์ค์ *(p->str)
์ด๋ฏ๋ก str์ด๋ผ๋ ๋ฉค๋ฒ๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ฐ์ ์๋ฏธํ๋ค.
6.3. Arrays of Structure
ํฌ์ธํฐ๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด์ด ์๋ฏ ๊ตฌ์กฐ์ฒด๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด๋ ์๋ค.
๋ฌธ์์ด C
์์ ์ฌ์ฉ๋๋ ํค์๋์ค ์ด๋ ๊ฒ์ด ๋ช ๋ฒ ๋์๋์ง ์ธ๋ ํ๋ก๊ทธ๋จ์ ์๊ฐํด ๋ณด์. ์ด ํ๋ก๊ทธ๋จ์๋ ์ด๋ฆ์ ๋ํ๋ด๋ ๋ฌธ์์ด์ ๋ฐฐ์ด๊ณผ ๊ทธ ์๋ฅผ ์ธ๊ธฐ ์ํ ์ ์์ ๋ฐฐ์ด์ด ํ์ํ๋ค. ๊ทธ ํ๊ฐ์ง ๋ฐฉ๋ฒ์ keyword์ keycount ๋ผ๋ ๋๊ฐ์ ๋ฐฐ์ด์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
์๋๋ฉด ๋ ๊ฐ์ ๋ฐฐ์ด ๋์ ๊ตฌ์กฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
๊ตฌ์กฐ์ฒด๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด ์ ์ธ
์๋ฏธ๋ฅผ ๋ณด๋ฉด key
๋ผ๋ ๊ตฌ์กฐ์ฒด๋ฅผ ์์๋ก ๊ฐ๋ ๊ธธ์ด NKEYS
์ ๋ฐฐ์ด keytab
์ ๋ง๋ ๊ฒ์ด๋ค. ๊ทธ๋ ๋ค. ๊ตฌ์กฐ์ฒด๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด์ ๋ง๋ค์๋ค.
๋ฐฐ์ด์ ์ ์ธ์ด ๋ค์๊ณผ ๊ฐ์์์ ๋ ์ฌ๋ฆฌ๋ฉด ์๊ตฌ๊ฐ ๋ง๋ค.
๊ตฌ์กฐ์ฒด ๋ฐฐ์ด์ ์ ์ธ๊ณผ ๋์์ ํ ๋น
์๋๋ฉด ์ข ๋ ์๊ฐ์ ์ผ๋ก ์ ๋ณด์ด๊ฒ ์ด๋ ๊ฒ ๊ตฌ์กฐ์ฒด ๋จ์๋ก ๋ฌถ์ ์๋ ์๋ค.
๋ณธ๊ฒฉ ํค์๋ ์ธ๋ ํ๋ก๊ทธ๋จ ์์ฑ
ํค์๋ ์๋ ๋ฐฐ์ด์ size(์ฉ๋)๋ฅผ ์์์ธ ๊ตฌ์กฐ์ฒด์ size(์ฉ๋)์ผ๋ก ๋๋ ๊ฒ๊ณผ ๊ฐ๋ค. ์ด๋ฅผ ํตํด define๋ฌธ์์ NKEYS ์ฆ ํค์๋์ ๊ฐ์๋ฅผ ์ ํ ์ ์๋ค.
๋๋
6.4. Pointers to Structures
์ด๋ฒ์ ๋ฌธ์์ด C์ ํค์๋ ์ค ์ด๋ค ๊ฒ์ด ๋ช ๋ฒ ๋์๋์ง ์ธ๋ ํ๋ก๊ทธ๋จ์ ๋ค์ ์์ฑํด๋ณด์. ๋จ ๋ฐฐ์ด์ ์ธ๋ฑ์ค ๋์ ํฌ์ธํฐ๋ฅผ ์ฐ๊ธฐ๋ก ํ๋ค. main
๊ณผ binsearch
๋ฅผ ์กฐ๊ธ ์์ ํ๋ค.
6.5. Self-referential Structures
์ด๋ฒ์ ์ด๋ ํ ์ ๋ ฅ์์ ๋ฐ์ํ ์ ์๋ ๋ชจ๋ ๋จ์ด์ ๋ฐ์ํ์๋ฅผ ์ ์ ์๋ ์ข ๋ ์ผ๋ฐ์ ์ธ ๋ฌธ์ ๋ฅผ ํธ๋ ํจ์๋ฅผ ์์ฑํด๋ณด์. ๋จ์ด์ ๋ชฉ๋ก์ ๋ฏธ๋ฆฌ ์ ์ ์๊ธฐ ๋๋ฌธ์ ์ฝ๊ฒ ์ ๋ ฌ์์ผ ์ด์งํ์์ ์ฌ์ฉํ ์๊ฐ ์๋ค. ๋ํ ๋จ์ด๊ฐ ๋์ฌ ๋ ๋ง๋ค ๊ทธ ๋จ์ด๊ฐ ์ด๋ฏธ ๋ํ๋ฌ๋ ๊ฒ์ธ์ง๋ฅผ ์๊ธฐ ์ํด ๋ชจ๋ ๋จ์ด๋ฅผ ๋ค์ ธ๋ณผ ์๋ ์๋ค. ํ๋ก๊ทธ๋จ์ด ๋๋ฌด ๋๋ ค์ง๊ธฐ ๋๋ฌธ์ด๋ค(O(n2) ์ ๋ณต์ก๋๋ฅผ ๊ฐ๋๋ค).
ํ๊ฐ์ง ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์๋ก์ด ๋จ์ด๊ฐ ๋ค์ด์ฌ ๋๋ง๋ค ์ ๋นํ ์์น์ ๊ทธ ๋จ์ด๋ฅผ ๋ฃ์์ผ๋ก์จ ๋ค์ด์จ ๋จ์ด๋ค์ ํญ์ ์ ๋ ฌ์์ผ ๋๋ ๊ฒ์ด๋ค. ์ด๊ฒ์ ์ํด ์ด์งํธ๋ฆฌ(binary tree)๋ผ๊ณ ๋ถ๋ฆฌ๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํด๋ณธ๋ค.
ํธ๋ฆฌ๋ ์๋ก ๋ค๋ฅธ ๊ฐ ๋จ์ด๋ง๋ค ํ๋์ ๋ ธ๋(node)๋ฅผ ๊ฐ๋๋ฐ ๊ฐ ๋ ธ๋๋ ๋ค์๊ณผ ๊ฐ์ ์ ๋ณด๋ฅผ ๊ฐ๋๋ค.
๋จ์ด์ ํฌ์ธํฐ
๋ฐ๊ฒฌ๋ ํ์
์ผ์ชฝ ์์๋ ธ๋์ ๋ํ ํฌ์ธํฐ
์ค๋ฅธ์ชฝ ์์๋ ธ๋์ ๋ํ ํฌ์ธํฐ
์ด๋ค ๋ ธ๋๋ 2๊ฐ๋ฅผ ๋๋ ์์๋ ธ๋๋ฅผ ๊ฐ์ง ์ ์๋ค. ์์๋ ธ๋๋ 0๊ณผ 1๋ก ํํ๋๋ค. ๊ฐ ๋ถ๋ฌด๋ ธ๋์ ์ผ์ชฝ ์์๋ ธ๋๋ ๋ถ๋ชจ๋ ธ๋๋ณด๋ค ์์ ๊ฐ์ ๊ฐ๋ ๋ ธ๋๋ง์ด ์๊ณ ์ค๋ฅธ์ชฝ ์์๋ ธ๋์๋ ๋ถ๋ชจ๋ ธ๋๋ณด๋ค ํฐ ๊ฐ์ ๊ฐ๋ ๋ ธ๋๋ง ์ค๊ฒ ๋๋ค. ์ฌ๊ธฐ์ ๊ฐ์ ๋น๊ต๋ ๋จ์ด์ ์ฌ์ ์ ์์๋ก ์ผ์๋ค(๋ค๋ฅธ ๋ฐฉ์์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋ ๋น๊ตํ ๊ฐ์ ๋ฌ๋ผ์ง ๊ฒ์ด๋ค).
"now is the time for all good men to come to the aid of their party"๋ผ๋ ๋ฌธ์ฅ์ผ๋ก๋ถํฐ ์ ๋ ฌ๋ ์ด์งํธ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ๋ค.
์๋ก์ด ๋จ์ด๊ฐ ๊ทธ ํธ๋ฆฌ์ ์๋ ์๋๋ฅผ ์๊ธฐ ์ํด์๋ ๊ฐ์ฅ ์์ ๋ ธ๋๋ถํฐ ์์ํ์ฌ ๊ทธ ๋ ธ๋์ ์ ์ฅ๋ ๊ฒ๊ณผ ์๋ก์ด ๋จ์ด๋ฅผ ๋น๊ตํ๋ค. ๋ ๋จ์ด๊ฐ ์ผ์นํ๋ฉด ๊ทธ ๋จ์ด๋ ํธ๋ฆฌ์ ์๋ ๊ฒ์ด๊ณ , ๋ง์ฝ ๊ทธ ๋จ์ด๊ฐ ๋ ธ๋์ ๋จ์ด๋ณด๋ค ์์ผ๋ฉด ์ผ์ชฝ ์์ ๋ ธ๋์ ๋น๊ตํ๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋์ ๋น๊ตํ๋ค. ๋น๊ต๋ ๋ฐฉํฅ์ผ๋ก ๋ง๋ ๋จ์ด๊ฐ ์์ผ๋ฉด ์๋ก์ด ๋จ์ด๋ ํธ๋ฆฌ์ ์๋ ๊ฒ์ด๊ณ ์๋ก์ด ๋จ์ด๋ฅผ ์ถ๊ฐํ๊ธฐ ์ํด ์ ๋นํ ๋น ๊ณต๊ฐ์ด ๋ง๋ จ๋๋ค. ์ด๋ฌํ ํ์์ ์ด๋ ํ ๋ ธ๋์ ์ผ์นํ์ง ์์ผ๋ฉด ๊ทธ ์์ ๋ ธ๋์ ๋ํด ๋๊ฐ์ ๊ณผ์ ์ ํ๊ฒ ๋๋ฏ๋ก recursiveํ ๊ณผ์ ์ด ๋๋ค. ๊ฐ ๋ ธ๋๋ฅผ ๋ค์ ์ดํด๋ณด๋ฉด ๋ค์ ๋ค ๊ฐ์ ์์๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
์ด๋ ๊ฒ ๋ ธ๋๋ฅผ ์ํ์ ์ผ๋ก ์ ์ธํ๋๊ฒ์ด ์ด์ํ๊ฒ ๋ณด์ด์ง๋ง, ์ฌ์ค ์๊ธฐ ์์ ์ ํฌํจํ๊ฒ ๋๋ ๊ฒ์ ์ค๋ฅ๊ฐ ๋ ํ ์ง๋ง tnode์ ํฌ์ธํฐ ๊ฐ์ ๊ฐ์ง๋ ๊ฒ์ด๋ฏ๋ก ๋ฌธ์ ๊ฐ ์๋ค.
์ด์ ํ๋ก๊ทธ๋จ์๋ณด์
Binary tree generator
addtree
๋ฃจํด์ ์ํ์ ์ด๋ค. main์์ ์ฝ์ด ๋ค์ธ ํ ๋จ์ด๋ ํธ๋ฆฌ์ ๋งจ ์์ ๋์ธ๋ค. ๊ฐ ๋จ๊ณ๋ง๋ค ๊ทธ ๋จ์ด๋ ๊ทธ ๋
ธ๋์ ์๋ ๋จ์ด์ ๋น๊ต๋์ด์ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ์ผ์ชฝ์ด๋ ์ค๋ฅธ์ชฝ ์์๋
ธ๋๋ก ๊ฐ์ ํธ๋ฆฌ๋ฅผ ์ํ์ ์ผ๋ก ํธ์ถํ๊ฒ ๋๋ค.
๊ฒฐ๊ตญ ๊ทธ ๋จ์ด๋ ๊ทธ ํธ๋ฆฌ์ ์๋ ์ด๋ค ๋จ์ด์ ์ผ์นํด์ ์นด์ดํธ๋ฅผ ํ๋ ์ฆ๊ฐ์ํค๋ ์ง ๋๋ ์ผ์นํ์ง ์์์ nullํฌ์ธํฐ๋ฅผ ๋ง๋ ๊ทธ ๋ ธ๋๊ฐ ํธ๋ฆฌ์ ์ฒจ๊ฐ๋์ด์ผ ํจ์ ๋ํ๋ด๊ฒ ๋๋ค. ๋ง์ผ ์๋ก์ด ๋ ธ๋๊ฐ ๋ง๋ค์ด์ง๋ฉด addtree๋ ๊ทธ ๋ ธ๋์ ๋ํ ํฌ์ธํฐ๋ฅผ ๋ฆฌํด์ํค๊ณ ๊ทธ ํฌ์ธํฐ๋ฅผ ํด๋น๋๋ ๋ฐ๋ก ์์ ๋ถ๋ชจ๋ ธ๋์ ๊ธฐ๋กํ๋ค.
addtree function
์๋ก์ด ๋
ธ๋์ ๋ํ ๊ธฐ์ต์ฅ์๋ ๋
ธ๋๋ฅผ ๊ธฐ์ตํ ์ ์๋ ์ ๋นํ ๊ธฐ์ต๊ณต๊ฐ์ ๋ํ ํฌ์ธํฐ๋ฅผ ๋ฆฌํด์ํค๋ talloc์ด๋ผ๋ ํจ์์ ์ํด ๋ฐฐ๋น๋๋ค(์๋ง๋ struct tnode dummy, *p = &dummy; return p;
)์์ด ๋ ๊ฑฐ ๊ฐ๋ค).
strdup์ ์ํด ์๋ก์ด ๋จ์ด๋ ์จ๊ฒจ์ง ์ฅ์๋ก ๋ณต์ฌ๋๋ค. ์นด์ดํฐ๋ ์ด๊ธฐํ๋๊ณ ๋ ๊ฐ์ ์์๋ ธ๋๋ NULL๊ฐ์ ๊ฐ๊ฒ ๋๋ค. ์ด ๋ถ๋ถ์ ์์์ ๋ณผ์์๋ฏ ์๋ก์ด ๋ ธ๋๊ฐ ์ถ๊ฐ๋ ๋๋ง ์คํ๋๋ค.
treenode๋ ์ ๋ ฌ๋ ์์๋ก ํธ๋ฆฌ๋ฅผ ์ถ๋ ฅํ๋ค. ๊ฐ๊ฐ์ ๋ง๋์์ ๋จผ์ ์ผ์ชฝ ์์๋ ธ๋๋ฅผ ์ถ๋ ฅํ ํ ๊ทธ ๋จ์ด๋ฅผ ์ถ๋ ฅํ๊ณ ๋ค์์ ์ค๋ฅธ์ชฝ ์์๋ ธ๋๋ฅผ ์ถ๋ ฅํ๋ค.
treeprint
talloc
strdup
Last updated
Was this helpful?