[์ž๋ฃŒ๊ตฌ์กฐ] 7. ํŠธ๋ฆฌ

7์žฅ. ํŠธ๋ฆฌ 1. ํŠธ๋ฆฌ์˜ ๊ฐœ๋… ํŠธ๋ฆฌ๋กœ ๋‚˜ํƒ€๋‚ธ ํŠธ๋ฆฌ ๊ณ„์ธตํ˜• ๊ตฌ์กฐ ๋ฐ์ดํ„ฐ ํ‘œํ˜„์— ์ ํ•ฉํ•œ ์ž๋ฃŒ๊ตฌ์กฐ ex1) Tree -> Binary Tree / m-way Tree ex2) Nodes : ๋ชจ์ฐจ๋ฅดํŠธ, ๋ฐ”ํ, ๋ฒ ํ† ๋ฒค, ์„ธ์ž”, ํ”ผ์นด์†Œ, ์•„์ธ์Šˆํƒ€์ธ, ๋‰ดํ„ด Root : ์œ„์ธ -> ์˜ˆ์ˆ ๊ฐ€ / ํ•™์ž 2. ์šฉ์–ด ๋…ธ๋“œ (์ •์ ) ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ํ•ญ๋ชฉ ์„œ๋ธŒํŠธ๋ฆฌ ํŠน์ • ๋…ธ๋“œ ํ•˜์œ„๋กœ ํŒŒ์ƒ๋˜๋Š” ์ƒˆ๋กœ์šด ํŠธ๋ฆฌ ๋ฃจํŠธ๋…ธ๋“œ ๋ถ€๋ชจ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง€์ง€ ์•Š๋Š” ์ตœ์ƒ์œ„ ๋…ธ๋“œ ๋ฆฌํ”„๋…ธ๋“œ ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง€์ง€ ์•Š๋Š” ์ตœํ•˜์œ„ ๋…ธ๋“œ ์ง„์ž… ์ฐจ์ˆ˜ ๋…ธ๋“œ๋กœ ๋“ค์–ด์˜ค๋Š” ์„ ์˜ ๊ฐœ์ˆ˜ ๋ฃจํŠธ๋…ธ๋“œ๋Š” 0์ด๋ฉฐ ๋‚˜๋จธ์ง€ ๋…ธ๋“œ๋Š” ๋ฌด์กฐ๊ฑด 1์ด๋‹ค. 2์ด์ƒ์ธ ๊ฒฝ์šฐ ๊ทธ๋ž˜ํ”„๊ฐ€ ๋œ๋‹ค. ์ง„์ถœ ์ฐจ์ˆ˜ ๋…ธ๋“œ๋กœ ๋ถ€ํ„ฐ ๋‚˜๊ฐ€๋Š” ์„ ์˜ ๊ฐœ์ˆ˜ ๋…ธ๋“œ์˜ ์ฐจ์ˆ˜๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. (degree of a node) ์ตœ๋Œ€ ์ฐจ์ˆ˜๊ฐ€ ํŠธ๋ฆฌ ์ „์ฒด์˜..

  • textsms

[์ž๋ฃŒ๊ตฌ์กฐ] 6. ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์˜ ์‘์šฉ

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ๋ณ€ํ˜• ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ์ข…๋ฅ˜ ๋‹จ์ผ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ๋‹จ์ผ/์ด์ค‘ ์›ํ˜• ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ๋‹จ์ผ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ํ—ค๋“œ๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฒ€์ƒ‰ ์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ํŠน์ • ๋…ธ๋“œ์˜ ์„ ํ–‰ ๋…ธ๋“œ์— ์ ‘๊ทผํ•˜๊ธฐ ์šฉ์ดํ•˜๋„๋ก ๊ฐœ์„  ์›ํ˜• ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ๊ผฌ๋ฆฌ ๋…ธ๋“œ์˜ ๋งํฌ๊ฐ€ ํ•ญ์ƒ Null ์ธ ๊ฒƒ์„ ๊ฐœ์„ ํ•˜์—ฌ ์ฒ˜์Œ์œผ๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ๊ฐœ์„  (๊ฒ€์ƒ‰์„ฑ๋Šฅ ํ–ฅ์ƒ) ์ด์ค‘ ์›ํ˜• ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์™€ ์›ํ˜• ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ์žฅ์ ์„ ํ•ฉ์นœ ๊ฒƒ์œผ๋กœ, ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ๋‚ด์—์„œ ์„ ํ–‰ ๋…ธ๋“œ์™€ ํ›„ํ–‰ ๋…ธ๋“œ์˜ ์ ‘๊ทผ์ด ์ž์œ ๋กœ์šฐ๋ฉฐ ์ฒซ ๋…ธ๋“œ์™€ ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•ด๋‘์–ด ์ˆœํ™˜๊ตฌ์กฐ๋กœ ์ธ๋ฑ์‹ฑ์„ ํ•œ์ธต ๋” ์ž์œ ๋กญ๊ฒŒ ๋งŒ๋“  ์ž๋ฃŒ๊ตฌ์กฐ ์ด๋‹ค.

  • textsms

[์ž๋ฃŒ๊ตฌ์กฐ] 5. ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ

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. ๋ฐฐ์—ด์„ ์ด์šฉํ•œ ๋ฆฌ์ŠคํŠธ ๊ตฌํ˜„ ๋ฐฐ์—ด์„ ์ด์šฉํ•˜์—ฌ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ตฌํ˜„ํ•œ ์ž๋ฃŒํ˜• ๋ฐฐ์—ด๋กœ ๊ตฌ์„ฑํ•œ ๋ฆฌ์ŠคํŠธ ์ค‘๊ฐ„ ์ธ๋ฑ์Šค์— ์ž๋ฃŒ๊ฐ€ ์‚ฝ์ž…๋˜๋Š” ๊ฒฝ์šฐ ๋ฐฐ์—ด์„ ์ด์šฉํ•˜์—ฌ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด, ๋…ผ๋ฆฌ์ ์ธ ์ˆœ์„œ์™€ ํ•จ๊ป˜ ๋ฌผ๋ฆฌ์ ์ธ ์ˆœ์„œ ๋˜ํ•œ ์ผ์ •ํ•˜๊ฒŒ ์œ ์ง€ ๋œ๋‹ค. ์ด๋กœ ์ธํ•ด ์ค‘๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…์ด๋‚˜ ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธด๋‹ค๋ฉด ๋’ค์˜ ์ธ๋ฑ์Šค ์ž๋ฃŒํ˜•๋“ค์˜ ๋ฌผ๋ฆฌ์  ๊ณต๊ฐ„..

  • textsms

[์ž๋ฃŒ๊ตฌ์กฐ] 4. ํ

4๊ฐ•. ํ 1. ํ์˜ ๊ฐœ๋… โญ **๊ฐ€์žฅ ๋จผ์ € ๋Œ€๊ธฐ ์ค„์— ๋“ค์–ด๊ฐ„ ์ž‘์—…์ด ๊ฐ€์žฅ ์ฒ˜์Œ์— ์ฒ˜๋ฆฌ๋˜๋Š” ์ž‘์—… (First-In-First-Out) ํ•œ ์ชฝ์—์„œ ์‚ญ์ œ, ๋‹ค๋ฅธ ํ•œ ์ชฝ์—์„œ ์‚ฝ์ž… ์—ฐ์‚ฐ์ด ๋ฐœ์ƒํ•œ๋‹ค.** queue ์˜ ์ž๋ฃŒ ์ž…์ถœ๋ ฅ 2. ํ์˜ ์ถ”์ƒ ์ž๋ฃŒํ˜• Queue Create_q(maxQueueSize) ํ์˜ ํฌ๊ธฐ๊ฐ€ maxStackSize์ธ ๋นˆ ํ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•œ๋‹ค. Boolean IsFull_q(queue, maxQueueSize) ํ์— ์ €์žฅ๋˜์–ด์žˆ ์ž๋ฃŒ์˜ ๊ฐฏ์ˆ˜๋ฅผ ํŒŒ์•…ํ•˜์—ฌ ์ €์žฅ๊ณต๊ฐ„์ด ๋‚จ์•„ ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. Queue Add_q(queue, item) ํ์— ์ €์žฅ๊ณต๊ฐ„์ด ์žˆ๋‹ค๋ฉด rear ์˜์—ญ์— item์„ ์‚ฝ์ž…ํ•œ๋‹ค. Boolean IsEmpty_q(queue) ํ์˜ front ํฌ์ธํ„ฐ์™€ rear ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ™์€ ์ฃผ์†Œ๋ฅผ ๊ฐ€..

  • textsms
[์ž๋ฃŒ๊ตฌ์กฐ] 3. ์Šคํƒ

[์ž๋ฃŒ๊ตฌ์กฐ] 3. ์Šคํƒ

3๊ฐ•. ์Šคํƒ 1. ์Šคํƒ์˜ ๊ฐœ๋… ๐Ÿ’ก ๊ฐ์ฒด์™€ ๊ทธ ๊ฐ์ฒด๊ฐ€ ์ €์žฅ๋˜๋Š” ์ˆœ์„œ๋ฅผ ๊ธฐ์–ตํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๊ด€ํ•œ ์ถ”์ƒ ์ž๋ฃŒํ˜• ๊ฐ€์žฅ ๋‚˜์ค‘์— ๋“ค์–ด์˜จ ์ž๋ฃŒ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ๋‚˜๊ฐ€๋Š” ํ˜•ํƒœ(LIFO, ํ›„์ž…์„ ์ถœ) TOP : ์Šคํƒ์—์„œ ๊ฐ€์žฅ ์ตœ๊ทผ์— ์‚ฝ์ž… ๋œ ์ž๋ฃŒ์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ง€์นญ push : ์Šคํƒ์— ์ž๋ฃŒ ํ•˜๋‚˜๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ํ•จ์ˆ˜. ์Šคํƒ์˜ ์ €์žฅ๊ณต๊ฐ„์ด ์ถฉ๋ถ„ํ•œ์ง€ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค. pop : ์Šคํƒ์˜ ์ตœ์ƒ๋‹จ ์ž๋ฃŒํ˜•์„ ๋ฐ˜ํ™˜(์ œ๊ฑฐ) ํ•˜๋Š” ํ•จ์ˆ˜. ์Šคํƒ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค. 2. ์Šคํƒ์˜ ์ถ”์ƒ ์ž๋ฃŒํ˜• Stack CreateS(maxStackSize) ์Šคํƒ์˜ ํฌ๊ธฐ๊ฐ€ maxStackSize์ธ ๋นˆ ์Šคํƒ์„ ์ƒ์„ฑํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•œ๋‹ค. Boolean IsFull(stack, maxStackSize) ์Šคํƒ์ด ๊ฐ€๋“ ์ฐผ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค. Stack Push(s..

  • textsms

[์ž๋ฃŒ๊ตฌ์กฐ] 2. ๋ฐฐ์—ด

1. ๋ฐฐ์—ด์˜ ์ •์˜ ๐Ÿ’ก ๋ฐฐ์—ด : ์ผ์ •ํ•œ ์ฐจ๋ก€์™€ ๊ฐ„๊ฒฉ์— ๋”ฐ๋ผ ๋ฒŒ์—ฌ ๋†“์€ ์ž๋ฃŒํ˜• 1.1 ๋ฐฐ์—ด์˜ ์ •์˜ ์ธ๋ฑ์Šค์™€ ์›์†Œ๊ฐ’(index, value) ์˜ ์Œ์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ง‘ํ•ฉ์œผ๋กœ ์ •์˜๋œ ๊ฐ ์ธ๋ฑ์Šค๋Š” ๊ทธ ์ธ๋ฑ์Šค์™€ ๊ด€๋ จ๋œ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค. 1.2 ๋ฐฐ์—ด์˜ ํŠน์„ฑ ์›์†Œ๋“ค์ด ๋ชจ๋‘ ๊ฐ™์€ ์ž๋ฃŒํ˜•, ์ฆ‰ ๋™์งˆ์˜ ๊ฐ’๊ณผ ๊ธฐ์–ต ๊ณต๊ฐ„์˜ ํฌ๊ธฐ๊ฐ€ ๊ฐ™๋‹ค. ๋ฐฐ์—ด์˜ ๊ฐ ์›์†Œ์˜ ๋ฌผ๋ฆฌ์ ์ธ ์œ„์น˜(๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ)์˜ ์ˆœ์„œ๊ฐ€ ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค ์ˆœ์„œ(๋…ผ๋ฆฌ์  ์ˆœ์„œ) ์™€ ์ผ์น˜ํ•œ๋‹ค. ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค ๊ฐ’์„ ์ด์šฉํ•ด์„œ ๋ฐฐ์—ด์˜ ์›์†Œ๊ฐ’์— ์ง์ ‘ ์ ‘๊ทผ(direct access) ํ•œ๋‹ค. → ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๋Š” ์‚ฌ๋žŒ(๊ฐœ๋ฐœ์ž)๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ์ •์˜ํ•œ (์ถ”์ƒํ™”) ๊ฐ’์ด๋‹ค. ๋ฐฐ์—ด์—์„œ ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๋ฅผ ์•Œ๊ณ  ์žˆ์„ ๋•Œ ์›์†Œ๋ฅผ ์ฐพ์•„๋‚ด๋Š” ๋ฐฉ๋ฒ•์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ O(1)๋กœ ๋‘๋Š” ์ด์œ ์— ๋Œ€ํ•ด ๊ถ๊ธˆํ–ˆ์—ˆ๋Š”๋ฐ, ์ด๋Š” ๋ฐฐ์—ด..

  • textsms