Computer Science/Data structure

์ž๋ฃŒ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜- List ๋ฆฌ์ŠคํŠธ

ํ”„๋กœ๊ทธ๋ž˜๋จธ ์˜ค์›” 2023. 7. 17.

๋ฆฌ์ŠคํŠธ๋Š” ์„ ํ˜•์ ์ธ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ผ๋ ฌ๋กœ ๋Š˜์—ฌ๋†“์€ ํ˜•ํƒœ์ด๋‹ค. 

๋ฐ์ดํ„ฐ ๊ฐ„์˜ ์ˆœ์„œ๊ฐ€ ์žˆ๋‹ค.

๋ฆฌ์ŠคํŠธ์—๋Š” ๋ฐ์ดํ„ฐ ์‚ฝ์ž…, ๋ฐ์ดํ„ฐ ์‚ญ์ œ, ๋ฆฌ์ŠคํŠธ ๋ฐ์ดํ„ฐ ํƒ์ƒ‰ํ•˜๊ธฐ 3๊ฐ€์ง€์˜ ์ค‘์š”ํ•œ ์—ฐ์‚ฐ์ด ์žˆ๋‹ค.

 

List
ArrayList LinkedList
single Linked List Double Linked List

 

ArrayList (๋ฆฌ์ŠคํŠธ - ๋ฐฐ์—ด)

 

๋ฐฐ์—ด ๊ธฐ๋ฐ˜์˜ ๋ฆฌ์ŠคํŠธ

๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์—ฐ์†์ ์œผ๋กœ ์‚ฌ์šฉ

์ถ”๊ฐ€ -> .add

์‚ญ์ œ -> .remove

ํƒ์ƒ‰ -> .get(์ธ๋ฑ์Šค ๋ฒˆํ˜ธ)

 

ArrayList ์‚ฝ์ž…

๋ฐฐ์—ด์€ ์„ ์–ธํ•˜๋ฉด ์„ ์–ธ๋œ ํฌ๊ธฐ์˜ ๊ณต๊ฐ„์„ ํ• ๋‹น ๋ฐ›๋Š”๋‹ค.

๋ฐฐ์—ด์˜ ๊ฐ’์ด ์ฐฌ ๋ฐฐ์—ด์—์„œ ์ค‘๊ฐ„์˜ ๊ฐ’์„ ์‚ฝ์ž…ํ•˜๊ธฐ ์œ„ํ•ด์„  ์‚ฝ์ž… ํ•˜๋ ค๋Š” ์ธ๋ฑ์Šค์˜ ๋’ท์ชฝ ์ธ๋ฑ์Šค๋“ค์„ ๋ชจ๋‘ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ•œ์นธ์”ฉ ๋จผ์ € ์ด๋™์‹œ์ผœ ์ฃผ์–ด์•ผํ•œ๋‹ค.

 

์˜ฎ๊ฒจ์ค„ ๋ฐ์ดํ„ฐ๊ฐ€ 1๊ฐœ๋ผ๋ฉด 1๋ฒˆ n๊ฐœ ๋ผ๋ฉด n๋ฒˆ ์ด๋™์‹œ์ผœ์ค˜์•ผํ•œ๋‹ค. ์œ„๋Š” 2๊ฐœ ๋ฐ์ดํ„ฐ๋ฅผ ์ด๋™์‹œํ‚ค๋ฏ€๋กœ 2๋ฒˆ ์ด๋™ ์‹œํ‚ค๊ฒŒ ๋œ๋‹ค.

๋”ฐ๋ผ์„œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N)์ด ๋œ๋‹ค.

 

 

ArrayList์‚ญ์ œ

 

์‚ญ์ œํ–ˆ์„ ๋•Œ๋„ N๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋‹น N๋ฒˆ ์ด๋™์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์— O(N)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค.

 

 

 

ArrayList ํƒ์ƒ‰

ํƒ์ƒ‰ by index

๋ฐ์ดํ„ฐ์˜ ๋žœ๋ค ์—‘์„ธ์Šค๋กœ ํ•ด๋‹น ์œ„์น˜์— ๋‹ค์ด๋ ‰ํŠธ๋กœ ์ ‘๊ทผํ•˜๊ธฐ ๋•Œ๋ฌธ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋ฌด๋ฆฌ ๋งŽ์•„๋„ ํ•œ๋ฒˆ์— ํ•ด๋‹น ์œ„์น˜์— ์ ‘๊ทผํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(1)์ด๋‹ค.

 

 


 

Linked List (๋ฆฌ์ŠคํŠธ -  ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ)

 

 

 

๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋Š” ๋…ธ๋“œ๋ผ๋Š” ๊ฐ์ฒด๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. ๋˜ํ•œ ๋…ธ๋“œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํ•„๋“œ์™€ ๋‹ค์Œ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฅดํ‚ค๋Š” ๋„ฅ์ŠคํŠธ ํฌ์ธํ„ฐ ํ•„๋“œ๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค. ๋…ธ๋“œ๋“ค์ด ๋‹ค ์—ฐ๊ฒฐ๋œ ํ˜•ํƒœ๋ฅผ ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋ผ๊ณ  ํ•œ๋‹ค.

 

 

 

๊ฒ€์ƒ‰

๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋Š” ์–ด๋ ˆ์ด ๋ฆฌ์ŠคํŠธ์™€ ๋‹ฌ๋ฆฌ ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•œ random access ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

์ž์‹ ์„ ๊ฐ€๋ฅดํ‚ค๋Š” ๋„ฅ์ŠคํŠธ ํฌ์ธํ„ฐ๋งŒ์œผ๋กœ ์ ‘๊ทผ์„ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—

N๊ฐœ์˜ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ์˜ ๊ฒ€์ƒ‰์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N)์ด๋‹ค.

 

์ถ”๊ฐ€ 

Tail๋…ธ๋“œ ๋‹ค์Œ์œผ๋กœ ๋ถ™๋Š”๋‹ค.

ํ…Œ์ผ ๋…ธ๋“œ๊นŒ์ง€ ์ฐพ์•„๊ฐ€์„œ ๋’ค์— ์ถ”๊ฐ€ํ•จ์œผ๋กœ ํ…Œ์ผ ๋…ธ๋“œ ๊นŒ์ง€ ์ฐพ์•„๊ฐ€๋Š” ๊ณผ์ •์ด ๊ฑธ๋ฆฌ๋ฏ€๋กœ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š”O(N)์„ ๊ฐ–๋Š”๋‹ค.

 

์‚ฝ์ž…

์–ด๋ ˆ์ด ๋ฆฌ์ŠคํŠธ์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ์นธ์”ฉ ๋‹ค ๋ฏธ๋ฃฐ ํ•„์š”๊ฐ€ ์—†๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ํฌ์ธํ„ฐ๋งŒ ์ˆ˜์ •ํ•ด์ฃผ๋ฉด ์‚ฝ์ž…์ด ๋œ๋‹ค. ์ด๋•Œ ์‚ฝ์ž…ํ•˜๊ธฐ ์œ„ํ•ด ํ•ด๋‹น ๋…ธ๋“œ๊นŒ์ง€ ์ฐพ์•„๊ฐ€๋Š” ๊ณผ์ •๋•Œ๋ฌธ์— ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N)์ด๋‹ค.

 

์‚ญ์ œ

์–ด๋ ˆ์ด ๋ฆฌ์ŠคํŠธ์™€ ๋‹ฌ๋ฆฌ ์‚ญ์ œํ›„ ๋’ค ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ํ•œ์นธ์”ฉ ๋‹ค ๋Œ์–ด์˜ฌ ํ•„์š”๋Š” ์—†๋‹ค. ์‚ญ์ œํ•ด์•ผํ•  ๋…ธ๋“œ๊นŒ์ง€ ์ฐพ์•„๊ฐ€๋Š” ๊ณผ์ •๋งŒ์ด ํ•„์š”ํ•œ๋‹ค.

์ž์‹ ์ด ๊ฐ–๊ณ  ์žˆ๋˜ ๋„ฅ์ŠคํŠธ ํฌ์ธํ„ฐ ๊ฐ’์„ ์ด์ „ ๋…ธ๋“œ์˜ ๋„ฅ์ŠคํŠธ ํฌ์ธํ„ฐ ๊ฐ’์œผ๋กœ ํ• ๋‹นํ•ด์ฃผ๊ณ  ์ž์‹ ์€ ์•„๋ฌด ์ฐธ์กฐ ๊ฐ’๋„ ๊ฐ–๊ณ  ์žˆ์ง€์•Š๊ธฐ ๋•Œ๋ฌธ์—  JAVA์˜ ๊ฐ€๋น„์ง€ ์ฝœ๋ ‰ํ„ฐ์—์„œ  ์ž๋™์œผ๋กœ ์‚ญ์ œ๊ฐ€ ์ด๋ฃจ์–ด์ง„๋‹ค.

 

๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ์˜ ์žฅ์ 

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

2. ์œ ์—ฐํ•œ ๊ณต๊ฐ„ ( ์–ด๋ ˆ์ด ๋ฆฌ์ŠคํŠธ ๊ฒฝ์šฐ ๋’ค์— ๋นˆ ๋ฐฐ์—ด์ด ์ข€๋งŒ ๋‚จ์•„๋„ ๋ชจ๋‘ ์žก๊ณ  ์žˆ์ง€๋งŒ ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋Š” ์“ฐ๋Š” ๊ณต๊ฐ„ ๋งŒํผ๋งŒ ๋Š˜์–ด๋‚ฌ๋‹ค, ์ค„์—ˆ๋‹ค ํ•œ๋‹ค.)

 

๋‹จ์ 

random access๊ฐ€ ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์•„ ์ ‘๊ทผ์— ๋Œ€ํ•œ ์‹œ๊ฐ„์ด ๋Š˜์–ด๋‚œ๋‹ค. O(N)์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค.

 

 

LinkedList ์™€ ArrayList ์ฐจ์ด

 

์ด๋Ÿฌํ•œ ์‹œ๊ฐ„ ๋ณต์žก๋„ ์ฐจ์ด ๋•Œ๋ฌธ์— LinkedList ๋Š” ์‚ฝ์ž…์ด๋‚˜ ์‚ญ์ œ๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•˜๊ณ   ArrayList ๋Š” ๊ฒ€์ƒ‰ํ•  ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

 


 

๋Œ“๊ธ€