๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
IT

[๋ฐ์ดํ„ฐ ๊ตฌ์กฐ] ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(Linked lists)

by ๐Ÿ’ฒ๐ŸŽตโœ–๏ธโœ”๏ธโ˜ผ 2022. 11. 3.
728x90

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

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(Linked Lists)๋Š” ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์ด๋ฉฐ, ์•„๋ž˜์™€ ๊ฐ™์€ ์†์„ฑ์„ ๊ฐ–๋Š”๋‹ค.

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

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

๋‹ค์Œ์˜ ์—ฐ์‚ฐ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ถ”์ƒ ๋ฐ์ดํ„ฐํ˜•,
์ฆ‰, ADT(Abstract Data Type)๊ฐ€ ๋˜๋„๋ก ํ•œ๋‹ค.

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ์ฃผ์š” ์—ฐ์‚ฐ๋“ค

  • ์‚ฝ์ž…: ํ•ญ๋ชฉ์„ ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•œ๋‹ค.
  • ์‚ญ์ œ: ์ง€์ •๋œ ์œ„์น˜์˜ ํ•ญ๋ชฉ์„ ๋ฆฌ์ŠคํŠธ๋กœ๋ถ€ํ„ฐ ์‚ญ์ œํ•˜๋ฉฐ ๋ฆฌํ„ดํ•œ๋‹ค.

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ๋ณด์กฐ์  ์—ฐ์‚ฐ๋“ค

  • ๋ฆฌ์ŠคํŠธ ์‚ญ์ œ: ๋ฆฌ์ŠคํŠธ์˜ ๋ชจ๋“  ํ•ญ๋ชฉ์„ ์‚ญ์ œํ•œ๋‹ค.(๋ฆฌ์ŠคํŠธ๋„ ์‚ญ์ œ)
  • ๊ฐœ์ˆ˜ ์„ธ๊ธฐ: ๋ฆฌ์ŠคํŠธ์˜ ํ•ญ๋ชฉ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.
  • ๋ฆฌ์ŠคํŠธ์˜ ๋์œผ๋กœ๋ถ€ํ„ฐ n๋ฒˆ์งธ ํ•ญ๋ชฉ ์ฐพ๊ธฐ ๋“ฑ

์™œ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€?

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ๋งŽ์€ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋“ค์ด ์žˆ๋‹ค.

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์— ๋Œ€ํ•˜์—ฌ ๋…ผ์˜ํ•˜๊ธฐ ์ „์— ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์™€ ๋ฐฐ์—ด์˜ ์ฐจ์ด์ ์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์™€ ๋ฐฐ์—ด ๋ชจ๋‘ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.

์ด ๋‘˜์ด ๊ฐ™์€ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ ๋‘˜์˜ ์šฉ๋„๋ฅผ ๊ตฌ๋ถ„ํ•ด์•ผ ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

์ฆ‰, ์–ด๋–ค ๊ฒฝ์šฐ์— ๋ฐฐ์—ด์ด ์ ํ•ฉํ•˜๊ณ  ์–ด๋–ค ๊ฒฝ์šฐ์— ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ ํ•ฉํ•œ๊ฐ€ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋ฐฐ์—ด ๊ฐœ์š”

๋ฐฐ์—ด์˜ ํ•ญ๋ชฉ์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก ํ•˜๋‚˜๊ฐ€ ํ• ๋‹น๋œ๋‹ค.

๋ฐฐ์—ด์˜ ํ•ญ๋ชฉ์€ ํŠน์ • ํ•ญ๋ชฉ์˜ ์ธ๋ฑ์Šค๋ฅผ ์ฒจ์ž๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์ผ์ •ํ•œ ์‹œ๊ฐ„์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐฐ์—ด์˜ ํ•ญ๋ชฉ์— ์ ‘๊ทผํ•˜๋Š”๋ฐ ์™œ ์ผ์ •ํ•œ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š”๊ฐ€?

๋ฐฐ์—ด์˜ ํ•ญ๋ชฉ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ญ๋ชฉ์˜ ์ฃผ์†Œ๊ฐ€ ๋ฐฐ์—ด์˜ ๊ธฐ๋ณธ ์ฃผ์†Œ๋กœ๋ถ€ํ„ฐ์˜ ์˜คํ”„์…‹์œผ๋กœ ๊ณ„์‚ฐ๋˜๊ณ  ํ•œ ๋ฒˆ์˜ ๊ณฑ์…ˆ ์—ฐ์‚ฐ์œผ๋กœ ํ•ญ๋ชฉ์˜ ์ฃผ์†Œ๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ๋ณธ ์ฃผ์†Œ์— ๋”ํ•ด์ ธ์•ผ ํ•  ๊ฐ’์ด ๊ณ„์‚ฐ๋œ๋‹ค.

์ฒ˜์Œ์— ๋ฐ์ดํ„ฐํ˜•์— ๋”ฐ๋ฅธ ํ•ญ๋ชฉ์˜ ํฌ๊ธฐ๊ฐ€ ๊ณ„์‚ฐ๋˜๊ณ , ๊ทธ๊ฒƒ์ด ํ•ญ๋ชฉ์˜ ์ธ๋ฑ์Šค์— ๊ณฑํ•ด์ ธ์„œ ๊ธฐ๋ณธ ์ฃผ์†Œ์— ๋”ํ•ด์งˆ ๊ฐ’์ด ๋œ๋‹ค.

์ด ๊ณผ์ •์—์„œ ํ•œ ๋ฒˆ์˜ ๊ณฑ์…ˆ๊ณผ ํ•œ ๋ฒˆ์˜ ๋ง์…ˆ์ด ํ•„์š”ํ•˜๋‹ค.

์ด ๋‘ ์—ฐ ์‚ฐ์ด ์ผ์ •ํ•œ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋ฏ€๋กœ ๋ฐฐ์—ด ์ ‘๊ทผ์€ ์ผ์ •ํ•œ ์‹œ๊ฐ„์œผ๋กœ ์ˆ˜ํ–‰๋œ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐฐ์—ด์˜ ์žฅ์ 

  • ๊ฐ„๋‹จํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๋‹ค.
  • ํ•ญ๋ชฉ์—์„œ์˜ ์ ‘๊ทผ์ด ๋” ๋น ๋ฅด๋‹ค.(์ผ์ •ํ•œ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ์ ‘๊ทผ)
  • ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์—์„œ์˜ ํŠน์ˆ˜ํ•œ ์ง€์—ญ์„ฑ
  • ์—ฐ์†๋œ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์œผ๋กœ ์ •์˜๋˜๋ฏ€๋กœ ๋ฐฐ์—ด์˜ ํ•ญ๋ชฉ๋“ค์€ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๊ทผ์ฒ˜์— ์œ„์น˜ํ•œ๋‹ค.
     ์ด๊ฒƒ์€ ํ˜„๋Œ€์˜ CPU ์บ์‹ฑ ๊ธฐ๋ฒ•์— ๋งค์šฐ ์œ ๋ฆฌํ•˜๋‹ค.

๋ฐฐ์—ด์˜ ๋‹จ์ 

  • ๊ณ ์ •๋œ ํฌ๊ธฐ: ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•ด์ค˜์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” ์ •์ ์ด๋‹ค.
  • ํ•œ ๋ธ”๋ก์˜ ํ• ๋‹น: ๋ฐฐ์—ด ํฌ๊ธฐ๊ฐ€ ํด ๊ฒฝ์šฐ ์ฒ˜์Œ ๋ฐฐ์—ด์„ ํ• ๋‹นํ•  ๋•Œ ์ „์ฒด ๋ฐฐ์—ด์„ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์–ป์ง€ ๋ชปํ•  ๋•Œ๋„ ์žˆ๋‹ค.
  • ๋ณต์žกํ•œ ์œ„์น˜ ๊ธฐ๋ฐ˜์˜ ์‚ฝ์ž…: ์ฃผ์–ด์ง„ ์œ„์น˜์— ํ•ญ๋ชฉ์„ ์‚ฝ์ž…ํ•˜๋ ค๋ฉด ์ƒˆ ํ•ญ๋ชฉ ์ถ”๊ฐ€ํ•  ์ž๋ฆฌ ๋งˆ๋ จ์„ ์œ„ํ•ด ๊ธฐ์กด์˜ ํ•ญ๋ชฉ๋“ค์„ ์ด๋™ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ๋‹ค.
     ๋งŒ์•ฝ ์ƒˆ ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•  ์ž๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ์•ž์ด๋ฉด ๋‹ค๋ฅธ ํ•ญ๋ชฉ๋“ค์˜ ์ด๋™ ์—ฐ์‚ฐ์ด ๋”์šฑ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ฒŒ ๋œ๋‹ค.

๋™์  ๋ฐฐ์—ด

๋™์  ๋ฐฐ์—ด(๋˜๋Š” ํ™•์žฅ ๊ฐ€๋Šฅ ๋ฐฐ์—ด, ํฌ๊ธฐ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ ๋ฐฐ์—ด, ๋™์  ํ…Œ์ด๋ธ”, ๋ฐฐ์—ด ๋ฆฌ์ŠคํŠธ ๋“ฑ์œผ๋กœ ๋ถˆ๋ฆฐ๋‹ค)์€ ๋žœ๋ค ์ ‘๊ทผํ•˜๋Š” ํฌ๊ธฐ๊ฐ€ ๋ณ€ํ•˜๋Š” ๋ฆฌ์ŠคํŠธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ ์ƒˆ๋กœ์šด ํ•ญ๋ชฉ๋“ค์ด ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ์‚ญ์ œ๋  ์ˆ˜ ์žˆ๋‹ค.

๋™์  ๋ฐฐ์—ด์„ ๊ตฌํ˜„ํ•˜๋Š” ํ•œ ๊ฐ€์ง€ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ ์ฒ˜์Œ์— ์ผ์ •ํ•œ ๊ณ ์ •๋œ ํฌ๊ธฐ์˜ ๋ฐฐ์—ด๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ด ๋ฐฐ์—ด์ด ๊ฐ€๋“ ์ฐจ๋ฉด, ์›๋ž˜ ๋ฐฐ์—ด์˜ ๋‘ ๋ฐฐ ํฌ๊ธฐ์˜ ์ƒˆ ๋ฐฐ์—ด์„ ๋งŒ๋“ ๋‹ค.

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ๋ฐฐ์—ด์˜ ํ•ญ๋ชฉ์˜ ์ˆ˜๊ฐ€ ์ ˆ๋ฐ˜ ์ดํ•˜๊ฐ€ ๋˜๋ฉด ๋ฐฐ์—ด ํฌ๊ธฐ๋ฅผ ๋ฐ˜์œผ๋กœ ์ค„์ธ๋‹ค.

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ์žฅ์ 

  • ์ผ์ •ํ•œ ์‹œ๊ฐ„์œผ๋กœ ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ํ•˜๋‚˜์˜ ํ•ญ๋ชฉ์„ ์œ„ํ•œ ๊ณต๊ฐ„์œผ๋กœ ์‹œ์ž‘ํ•ด์„œ ๋ณต์‚ฌ๋‚˜ ์žฌํ• ๋‹น ์—†์ด ์ƒˆ ํ•ญ๋ชฉ์„ ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ๋‹จ์ 

  • ๊ฐœ๋ณ„ ํ•ญ๋ชฉ์— ์ ‘๊ทผํ•˜๋Š” ์ ‘๊ทผ ์‹œ๊ฐ„์ด ๊ธธ๋‹ค.
  • ๋ฐฐ์—ด์€ ๋žœ๋ค ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ๋ฐฐ์—ด์˜ ํ•ญ๋ชฉ์— ์ ‘๊ทผํ•˜๋Š”๋ฐ O(1)์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค.
     ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋Š” ๋ฆฌ์ŠคํŠธ์˜ ํ•ญ๋ชฉ์— ์ ‘๊ทผํ•˜๋Š”๋ฐ ์ตœ์•…์˜ ๊ฒฝ์šฐ O(n)์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค.
  • ์ €์žฅ ๊ณต๊ฐ„์˜ ๋™์  ํ• ๋‹น์ด ํฐ ์žฅ์ ์ด๊ธด ํ•˜์ง€๋งŒ ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ๊ณผ ์ธ์ถœ์— ๋”ํ•ด์ง€๋Š” ๋ถ€๋‹ด์ด ํฐ ์ฐจ์ด๋ฅผ ๋งŒ๋“ ๋‹ค.
  • ๋งˆ์ง€๋ง‰ ํ•ญ๋ชฉ์ด ์‚ญ์ œ๋˜๋ฉด, ๊ฐ€์žฅ ๋์—์„œ ํ•˜๋‚˜ ์ „์˜ ํ•ญ๋ชฉ์„ ์ฐพ์•„ ๊ทธ ํฌ์ธํ„ฐ๊ฐ€ NULL์„ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ๋ฆฌ์ŠคํŠธ๊ฐ€ ํƒ์ƒ‰๋˜์–ด์•ผ ํ•œ๋‹ค.
  • ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์—์„œ๋Š” ์ถ”๊ฐ€์ ์ธ ์ฐธ์กฐ ํฌ์ธํ„ฐ๋ฅผ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ๋‚ญ๋น„๋œ๋‹ค.

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์™€ ๋ฐฐ์—ด ๊ทธ๋ฆฌ๊ณ  ๋™์  ๋ฐฐ์—ด์˜ ๋น„๊ต

์ฐธ๊ณ 

๋‹ค์–‘ํ•œ ์˜ˆ์ œ๋กœ ํ•™์Šตํ•˜๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ for Java

๋Œ“๊ธ€