์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž์˜ ๊ฐœ์ธ ๊ณต๋ถ€ ๊ณผ์ •์„ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

์ž๋ฃŒ๊ตฌ์กฐ(data structure)

์ž๋ฃŒ๊ตฌ์กฐ: ๋Œ€๋Ÿ‰ ๋ฐ์ดํ„ฐ์˜ ํšจ์œจ์ ์ธ ์œ ์ง€ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•

๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ์ž๋ฃŒ๊ตฌ์กฐ๋“ค

์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž‘์„ฑ์— ์‚ฌ์šฉ๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์—๋Š” ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜๊ฐ€ ์žˆ์ง€๋งŒ ๊ทธ ์ค‘ ๋Œ€ํ‘œ์ ์ธ 5๊ฐœ๋ฅผ ์•Œ์•„๋ณด์ž.

1. ๋ฐฐ์—ด

๋ฐ์ดํ„ฐ๋ฅผ ๋นˆํ‹ˆ์—†์ด ๋‚˜์—ดํ•œ ์ž๋ฃŒ๊ตฌ์กฐ.

  • ๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œ๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ๋‹ค
  • ๋ฐฐ์—ด์˜ ์ข…๋ฅ˜
    • 1์ฐจ์› ๋ฐฐ์—ด: ์ผ์ง์„  ์ƒ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜์—ด
    • 2์ฐจ์› ๋ฐฐ์—ด: ์‚ฌ๊ฐํ˜•์ฒ˜๋Ÿผ ๊ฐ€๋กœ์„ธ๋กœ ๋นˆํ‹ˆ์—†์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜์—ด
    • 3์ฐจ์› ๋ฐฐ์—ด: ์ง์œก๋ฉด์ฒด์ฒ˜๋Ÿผ ๊ฐ€๋กœ, ์„ธ๋กœ, ๋†’์ด์— ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜์—ด

2. ๋ฆฌ์ŠคํŠธ(linked list)

๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ๋‚˜์—ดํ•œ ์ž๋ฃŒ๊ตฌ์กฐ.

  • ๋ฐฐ์—ด๊ณผ ๊ฐ™์ด ์ฐจ๋ก€๋Œ€๋กœ ๋‚˜์—ดํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.
  • ๊ทธ๋Ÿฌ๋‚˜ ๋ฐ์ดํ„ฐ๋“ค์ด ํ™”์‚ดํ‘œ๋กœ ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์–ด ๋ฐ์ดํ„ฐ๋“ค์ด ๋–จ์–ด์ง„ ์žฅ์†Œ์— ์œ„์น˜ํ•ด๋„ ๋œ๋‹ค๋Š” ์ ์ด ๋ฐฐ์—ด๊ณผ๋Š” ๋‹ค๋ฅด๋‹ค.
  • ๋ฆฌ์ŠคํŠธ์˜ ์ข…๋ฅ˜
    • ๋‹จ๋ฐฉํ–ฅ ๋ฆฌ์ŠคํŠธ: ์•ž์ชฝ์—์„œ ๋’ค์ชฝ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฐฉํ–ฅ์„ฑ์„ ๊ฐ€์ง„ ๋ˆ์œผ๋กœ ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ์‹. ๋‹จ๋ฐฉํ–ฅ ๋ฆฌ์ŠคํŠธ์˜ ๊ฐ ์š”์†Œ๋Š” 2๊ฐ€์ง€ ํ•ญ๋ชฉ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
      • ๋ฐ์ดํ„ฐ
      • ๋‹ค์Œ ์š”์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ: ์š”์†Œ์™€ ์š”์†Œ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋ˆ์˜ ์—ญํ• . ์œ„์น˜ ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋‹ค ์ฆ‰, ๋‹จ๋ฐฉํ–ฅ ๋ฆฌ์ŠคํŠธ๋Š” HEAD ํฌ์ธํ„ฐ(์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ)๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์š”์†Œ์—์„œ ์‹œ์ž‘ํ•˜๊ณ  NEXT ํฌ์ธํ„ฐ๊ฐ€ ์ข…๋ฃŒ ์ •๋ณด๋ฅผ ์ €์žฅํ•œ ์š”์†Œ(TAIL ํฌ์ธํ„ฐ: ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ)์—์„œ ๋๋‚œ๋‹ค.
    • ์–‘๋ฐฉํ–ฅ ๋ฆฌ์ŠคํŠธ: ์•ž์—์„œ๋ถ€ํ„ฐ ๋’ค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ˆ๊ณผ ๋’ค์—์„œ ์•ž์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ 2๊ฐœ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•. ์–‘๋ฐฉํ–ฅ ๋ฆฌ์ŠคํŠธ์˜ ๊ฐ ์š”์†Œ๋Š” 3๊ฐ€์ง€ ํ•ญ๋ชฉ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค
      • ๋ฐ์ดํ„ฐ
      • NEXT ํฌ์ธํ„ฐ: ๋‹ค์Œ ์š”์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ
      • PREV ํฌ์ธํ„ฐ: ์ด์ „ ์š”์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ

์ด๋ฏธ์ง€: [์ž๋ฃŒ๊ตฌ์กฐ] C - ๋งํฌ๋“œ๋ฆฌ์ŠคํŠธ, LInkedList

N๋ฒˆ์งธ ์š”์†Œ์˜ ์ฐธ์กฐ๊ฐ€ ๋น ๋ฅธ ๊ฒƒ์€ ๋ฐฐ์—ด, ๋Š๋ฆฐ ๊ฒƒ์€ ๋ฆฌ์ŠคํŠธ ๊ตฌ์กฐ.
๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž… ์‚ญ์ œ๊ฐ€ ๋น ๋ฅธ ๊ฒƒ์€ ๋ฆฌ์ŠคํŠธ ๊ตฌ์กฐ, ๋Š๋ฆฐ ๊ฒƒ์€ ๋ฐฐ์—ด

3. ์Šคํƒ(stack)

์ฑ…์ƒ ์œ„์— ์ฑ…์„ ์Œ“๋“ฏ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ

  • FILO(First In Last Out), LIFO(Last In First Out)
  • ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š”(์Œ“๋Š”) ์ž‘์—…์„ ํ‘ธ์‹œ(PUSH)
  • ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด๋Š” ์ž‘์—…์„ ํŒ(POP)

4. ํ(queue)

๋Œ€๊ธฐ ํ–‰๋ ฌ. ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์€ ์ˆœ์„œ๋Œ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด๋Š” ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•

  • FIFO(First In First Out), LILO(Last In Last Out)
  • ํ์—์„œ๋Š” ์ค‘๊ฐ„์— ๋ผ์–ด๋“ค๊ฑฐ๋‚˜
  • ์ˆœ์„œ๋ฅผ ์–ด๊ธฐ๊ณ  ์ƒˆ์น˜๊ธฐ ํ•˜๋Š” ํ–‰๋™์€ ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค.

5. ํŠธ๋ฆฌ(๋‚˜๋ฌด ๊ตฌ์กฐ)

๋‚˜๋ฌด๊ฐ€์ง€๊ฐ€ 2๊ฐœ, 3๊ฐœ, โ€ฆ๋กœ ๊ฐˆ๋ผ์ง€๊ณ , ๊ทธ ๊ฐˆ๋ผ์ง„ ๋์—์„œ 2๊ฐœ, 3๊ฐœ, โ€ฆ ๋‚˜๋‰˜๋“ฏ ํŽด์ ธ ๋‚˜๊ฐ€๋Š” ์ž๋ฃŒ๊ตฌ์กฐ.

์ด๋ฏธ์ง€: ์ž๋ฃŒ๊ตฌ์กฐ-ํŠธ๋ฆฌ์˜ ๊ธฐ๋ณธ ๊ฐœ๋…/์šฉ์–ด

  • ํŠธ๋ฆฌ์˜ ์ข…๋ฅ˜
    • ์ด์ง„ ํŠธ๋ฆฌ(๋ฐ”์ด๋„ˆ๋ฆฌ ํŠธ๋ฆฌ): ๋ถ€๋ชจ ํ•˜๋‚˜์—์„œ ์ž์‹ ๋‘˜์ด ๋”ธ๋ฆฐ ๊ตฌ์กฐ
    • ํž™: ๋ถ€๋ชจ ๋…ธ๋“œ์˜ ๊ฐ’์ด ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐ’๋ณด๋‹ค ํ•ญ์ƒ ์ ์€ ์ด์ง„ ํŠธ๋ฆฌ. ์‹ค์ œ๋กœ ํž™์„ ๊ตฌํ˜„ํ•  ๋•Œ์—๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐฐ์—ด์„ ์‚ฌ์šฉ. ๋ฐฐ์—ด ์š”์†Œ ๋ฒˆํ˜ธ๋Š” ํž™์˜ โ€˜๋ฟŒ๋ฆฌโ€™ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋กœ,
      • โ€˜๊นŠ์ดโ€™๋Š” ์ž‘์€ ์ชฝ์—์„œ ํฐ ์ชฝ์œผ๋กœ
      • ๋…ธ๋“œ์˜ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ๋Œ€์ž…ํ•œ๋‹ค.


โœจ tl;dr

โœ”๏ธ ์ž๋ฃŒ๊ตฌ์กฐ๋ž€?

  • ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์ฒ˜๋ฆฌํ•œ ํ›„, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์—๋Š” ๋Œ€๋Ÿ‰ ๋ฐ์ดํ„ฐ์˜ ์ž…์ถœ๋ ฅ ๋ฐ ์ฒ˜๋ฆฌ์— ๋ณด๋‹ค ํšจ์œจ์ ์ธ ๋Œ€๋Ÿ‰ ๋ฐ์ดํ„ฐ์˜ ์œ ์ง€ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•˜๋‹ค.
  • ์ž๋ฃŒ ๊ตฌ์กฐ์˜ ์ข…๋ฅ˜๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ์ง€๋งŒ ๊ทธ ์ค‘ ๋Œ€ํ‘œ์ ์œผ๋กœ ๋ฐฐ์—ด, ๋ฆฌ์ŠคํŠธ, ์Šคํƒ, ํ, ํŠธ๋ฆฌ๊ฐ€ ์žˆ๋‹ค