LinkedList

Collections Framework์˜ LinkedList

๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ(Linked List)๋ž€?

๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ์˜ ๊ตฌ์„ฑ์„ ๋ณด๋ฉด ์„œ๋กœ ์—ฐ์†์ ์ด์ง€๋งŒ, ๋ฉ”๋ชจ๋ฆฌ์—์„œ์˜ ์—ฐ๊ฒฐ์€ ์—ฐ์†์ 

์ด์ง€ ์•Š๋‹ค.

๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ์˜ ์ฒซ ๋ฒˆ์งธ ๊ตฌ์„ฑ์š”์†Œ๋Š” ์ฐธ์กฐ๊ฐ’์„ ๊ฐ–๋Š” HEAD๊ฐ€ ์กด์žฌํ•œ๋‹ค.

  • HEAD๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ์— ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

LinkedList๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋…ธ๋“œ(Node)๋Š” ๋‘ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

  1. ๋…ธ๋“œ์˜ ๊ฐ’(๋ฐ์ดํ„ฐ)

  2. ๋‹ค์Œ ๋…ธ๋“œ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๋Š” ํ•„๋“œ(์ฐธ์กฐํ•˜๋Š” ๋ถ€๋ถ„) -> ๋…ธ๋“œ์˜ ๋ฌผ๋ฆฌ์ ์ธ ์œ„์น˜๋Š” ์ผ๋Œ€์ผ ์ฐธ์กฐ์ด๋‹ค.

Array์™€์˜ ์ฐจ์ด์ 

Array VS Linked List
  1. Array์™€์˜ ํฐ ์ฐจ์ด์ ์€ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋Š” ๋…๋ฆฝ๋œ ๊ฐ์ฒด์ด๋‹ค. LinkedList๋‚ด์— ์กด์žฌํ•˜๋Š” ๋…ธ๋“œ๊ฐ€ ํ•„์š”๊ฐ€ ์—†์–ด์ง€๋ฉด ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฐฐ์—ด์˜ ๊ฒฝ์šฐ ๊ตฌ์„ฑ๋œ ์…€์€ ๋ณ„๋„์˜ ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ์‚ญ์ œํ•  ์ˆ˜ ์—†๋‹ค. -> ์…€์˜ ๊ฐ’์€ ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์…€ ์ž์ฒด๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜์–ด ์กด์žฌํ•˜๊ฒŒ ๋œ๋‹ค .

  2. ๋‘๋ฒˆ์จฐ๋Š” ๊ฐ€๋ณ€ ํฌ๊ธฐ์ด๋‹ค.LinkedList๋Š” ๋ชฉ๋ก ๋์— ๋…ธ๋“œ๋ฅผ ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๋ฏธ ํ• ๋‹น๋œ ๋ฐฐ์—ด์€ ์šฉ๋Ÿ‰์ด ์ตœ๋Œ€๋กœ ๋„๋‹ฌํ•˜๋ฉด ๋ฐฐ์—ด ๋์— ์ƒˆ๋กœ์šด ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†๋‹ค.

  3. ์„ธ๋ฒˆ์งธ๋Š” ํƒ์ƒ‰ ์†๋„์ด๋‹ค. ๋ฐฐ์—ด์€ ์ธ๋ฑ์Šค๋กœ ์ ‘๊ทผํ•˜๋ฉด O(1)๋กœ ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. LinkedList์˜ ๊ฒฝ์šฐ์—๋Š” HEAD๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ๋‹ค์Œ ๋…ธ๋“œ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ์š”์†Œ์— ์—‘์„ธ์Šคํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด์„œ๋Š” ํšจ์œจ์ ์ด์ง€ ์•Š๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ตœ์•…์˜ ๊ฒฝ์šฐ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N)์ด ๊ฑธ๋ฆฐ๋‹ค.

ํŠน์ง•

  • ํƒ์ƒ‰์€ ArrayList๋ณด๋‹ค ๋А๋ฆฌ๋‹ค. -> ArrayList๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ Array๋ฅผ ์ด์šฉํ•จ.

    • ์š”์†Œ์˜ ์‚ฝ์ž…/์‚ญ์ œ๋Š” ArrayList๋ณด๋‹ค ๋น ๋ฅด๋‹ค.

  • ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜๊ณ  ๋ฐ์ดํ„ฐ ์ค‘๋ณต๋„ ํ—ˆ์šฉํ•œ๋‹ค.

  • ๋‹ค์Œ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฅดํ‚ค๋Š” ์ฐธ์กฐ๊ฐ€ ํ•„์š”ํ•˜๊ธฐ ๋–„๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋” ๋งŽ์ด ์ฐจ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์‚ฝ์ž…/์‚ญ์ œ ์—ฐ์‚ฐ์ด ๋งŽ์ด ๋ฐœ์ƒํ•˜๊ณ , ์š”์†Œ ์ ‘๊ทผ(์ฝ๊ธฐ)๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ์ ์€ ๊ฒฝ์šฐ ์ ํ•ฉํ•˜๋‹ค.

LinkedList๋Š” ๋‹จ๋ฐฉํ–ฅ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(Singly Linked List), ์–‘๋ฐฉํ–ฅ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(Doubly Linked List), ์–‘๋ฐฉํ–ฅ ์›ํ˜• ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(Circular Doubly Linked List)๊ฐ€ ์žˆ๋‹ค.


๊ตฌํ˜„

  • class LinkedList<T>

  • addFirst(Element)

addFIrst()

  • addLast(Element)

  • Node node(index) : ๋‚ด๋ถ€์ ์œผ๋กœ Node๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ๋ฉ”์†Œ๋“œ

  • add(index, Element) : ํŠน์ • ์œ„์น˜์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€

  • toString() ์˜ค๋ฒ„๋ผ์ด๋”ฉ

  • removeFirst

  • remove(int index)

  • removeLast()

  • size()

  • get(int index)

  • indexOf(Object node)

  • inner class ListIterator

  • Iterator next(), hasNext()

์ฐธ๊ณ  : https://opentutorials.org/module/1335/8857arrow-up-right

Last updated