๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์‹œ๋„/Code-States

[D+47] Linked List์™€ Hash Table

by ๐Ÿ‡๋ฐ•๋ด‰๋ด‰๐Ÿ‡ 2020. 10. 23.

 

D+47

-  Linked List์™€ Hash Table -

(Linked List, Hash Table)

 


 

 

Linked List

•ํฌ๊ธฐ๊ฐ€ ๋™์ ์ธ ์ž๋ฃŒ๊ตฌ์กฐ

 

• ๋…ธ๋“œ(๋ฐ์ดํ„ฐ ํ•„๋“œ + ๋งํฌ)์˜ ์—ฐ๊ฒฐ๋กœ ์ด๋ฃจ์–ด์ง„ ์ž๋ฃŒ๊ตฌ์กฐ

   ๋ฐ์ดํ„ฐ ํ•„๋“œ - ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณณ

   ๋งํฌ - ๋‹ค์Œ ๋…ธ๋“œ์˜ ์œ„์น˜๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๊ณณ

 

 

Singly Linked List (๋‹จ์ผ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ)

๋…ธ๋“œ ์•ˆ์— ๋งํฌ๊ฐ€ 1๊ฐœ์ด๊ณ , ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ ์ง„ํ–‰ํ•˜๋Š” ๋ฆฌ์ŠคํŠธ์ด๋‹ค.

 

๋…ธ๋“œ ์•ˆ ๋งํฌ๊ฐ€ 1๊ฐœ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด์ „ ๋…ธ๋“œ๋กœ ๊ฐˆ ์ˆ˜ ์—†๋‹ค.

 

Doubly Linked List (์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ)

๋…ธ๋“œ ์•ˆ์— ๋งํฌ๊ฐ€ 2๊ฐœ ์ด๊ณ  ์–‘๋ฐฉํ–ฅ์œผ๋กœ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ์ด๋‹ค.

 

Circular Linked List (ํ™˜ํ˜• ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ)

๋งˆ์ง€๋ง‰ ๋…ธ๋“œ๊ฐ€ ์ฒซ ๋ฒˆ์งธ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌ์ผœ์„œ ๊ณ„์† ํšŒ์ „ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด์ง„ ๋ฆฌ์ŠคํŠธ์ด๋‹ค.

 

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ๊ด€๋ จ ๋ฉ”์„œ๋“œ

•addToTail(value) : ์ฃผ์–ด์ง„ ๊ฐ’์„ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ๋์— ์ถ”๊ฐ€ํ•œ๋‹ค.

 

• remove(value) : ์ฃผ์–ด์ง„ ๊ฐ’์„ ์ฐพ์•„์„œ ์—ฐ๊ฒฐ์„ ํ•ด์ œ(์‚ญ์ œ)ํ•œ๋‹ค.

 

•getNodeAt(index) : ์ฃผ์–ด์ง„ ์ธ๋ฑ์Šค์˜ ๋…ธ๋“œ๋ฅผ ์ฐพ์•„์„œ ๋ฐ˜ํ™˜ํ•œ๋‹ค. (๊ฐ’์ด ์•„๋‹ˆ๋ผ ๋…ธ๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ๋…ธ๋“œ๊ฐ€ ์—†์„ ๊ฒฝ์šฐ undefined๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค)

 

•contains(value) : ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์— ์ฃผ์–ด์ง„ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋…ธ๋“œ์˜ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

•indexOf(value) : ์ฃผ์–ด์ง„ ๊ฐ’์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์—†์„ ๊ฒฝ์šฐ์—” -1์„ ๋ฐ˜ํ™˜ํ•˜๋‹ค.

 

 


Hash Table

•ํ‚ค์™€ ๊ฐ’์„ ์Œ์œผ๋กœ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ

 

• ํ‚ค๋ฅผ ์ €์žฅํ•  ๋•Œ์— ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ‚ค๋ฅผ ํ•ด์‹œํ•จ์ˆ˜๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ํŠน์ • ์ˆซ์ž ๊ฐ’์˜ ์ธ๋ฑ์Šค๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

 

•ํ•ด์‹œ ํ…Œ์ด๋ธ”์€ ํ•„์š”ํ•  ๋•Œ์—๋งŒ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ฆฌ๊ณ  ๊ฐ€๋Šฅํ•œ ์ž‘์€ ํฌ๊ธฐ๋ฅผ ์œ ์ง€ํ•œ๋‹ค.

 

 

ํ•ด์‹ฑ (Hashing)

ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด์„ ์›๋ž˜์˜ ๊ฒƒ์„ ์ƒ์ง•ํ•˜๋Š” ๋” ์งง์€ ๊ธธ์ด์˜ ๊ฐ’์ด๋‚˜ ํ‚ค๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์œผ๋กœ

ํ•ด์‹ฑ์€ ํ•ด์‹œ ํ…Œ์ด๋ธ”๊ณผ ํ•ด์‹œํ•จ์ˆ˜๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

 

ํ•ด์‹œ ์ถฉ๋Œ

ํ•ด์‹œ ํ•จ์ˆ˜๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ๊ฐœ์˜ ์ž…๋ ฅ๊ฐ’์— ๋Œ€ํ•ด ๋™์ผํ•œ ์ถœ๋ ฅ ๊ฐ’์„ ๋‚ด๋Š” ์ƒํ™ฉ

 

ํ•ด์‹œ ํ…Œ์ด๋ธ” ๊ด€๋ จ ์šฉ์–ด

•storage : ํ•ด์‹œ ํ…Œ์ด๋ธ”์—์„œ ์ž๋ฃŒ๋ฅผ ์ €์žฅํ•˜๋Š” ์ „์ฒด์ ์ธ ๊ณต๊ฐ„์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

 

• bucket : ๊ฐ ํ•ด์‹œํ…Œ์ด๋ธ”์— ์ธ๋ฑ์Šค(์ฃผ์†Œ) ๋ณ„๋„๋กœ ์กด์žฌํ•˜๋Š” ์Šฌ๋กฏ์„ ์˜๋ฏธํ•œ๋‹ค.

 

•tuple : ๊ฐ๊ฐ ๋ฐ์ดํ„ฐ๋“ค์„ ๋‹ด๊ณ  ์žˆ๋Š” ๋ฒ„ํ‚ท ๋‚ด๋ถ€์˜ ๊ณต๊ฐ„์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

 

ํ•ด์‹œ ํ…Œ์ด๋ธ” ๊ด€๋ จ ๋ฉ”์„œ๋“œ

•insert(key, value) : ์ฃผ์–ด์ง„ ํ‚ค์™€ ๊ฐ’์„ ์ €์žฅํ•˜๋ฉฐ, ์ด๋ฏธ ํ•ด๋‹น ํ‚ค๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋‹ค๋ฉด ๊ฐ’์„ ๋ฎ์–ด ์”Œ์šด๋‹ค.

 

•retrieve(key) : ์ฃผ์–ด์ง„ ํ‚ค์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ, ์—†์„ ๊ฒฝ์šฐ undefined๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

•remove(key) : ์ฃผ์–ด์ง„ ํ‚ค์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ์‚ญ์ œํ•˜๊ณ  ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ, ์—†์„ ๊ฒฝ์šฐ undefined๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

•_resize(newLimit) : ํ•ด์‹œ ํ…Œ์ด๋ธ”์˜ ์Šคํ† ๋ฆฌ์ง€ ๋ฐฐ์—ด์„ newLiit์œผ๋กœ ๋ฆฌ์‚ฌ์ด์ง•ํ•˜๋Š” ํ•จ์ˆ˜๋กœ, ๋ฆฌ์‚ฌ์ด์ง• ํ›„ ์ €์žฅ๋˜์–ด ์žˆ๋˜ ๊ฐ’์„ ์ „๋ถ€ ๋‹ค์‹œ ํ•ด์‹ฑ์„ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

 

๋ฐ˜์‘ํ˜•

'์‹œ๋„ > Code-States' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[D+49] Immersive 1์ฃผ์ฐจ  (0) 2020.10.25
[D+48] ๊ฐ•์ œํœด์‹...  (0) 2020.10.24
[D+46] ์Šคํƒ๊ณผ ํ  (0) 2020.10.22
[D+45] ESlint ์„ค์น˜ํ•˜๊ธฐ  (0) 2020.10.21
[D+44] call, apply, bind ๋ฉ”์†Œ๋“œ  (0) 2020.10.20

๋Œ“๊ธ€