• List

    2022. 5. 18.

    by. JuneBee

    728x90
    ๋ฐ˜์‘ํ˜•

    ๋ฆฌ์ŠคํŠธ

    ์ˆœ์„œ๋ฅผ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ถ”์ƒ์ž๋ฃŒํ˜• (abstract data type) ์œผ๋กœ, ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด๋„ ์ƒ๊ด€ ์—†๋‹ค. ๋ฆฌ์ŠคํŠธ๋Š” ํฌ๊ฒŒ ๋‘๊ฐ€์ง€๋กœ ๋‚˜๋‰˜๋Š”๋ฐ, ์ˆœ์ฐจ ๋ฆฌ์ŠคํŠธ์™€ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์žˆ๋‹ค.

    ๐Ÿคฆ๐Ÿป‍โ™€๏ธ ์ˆœ์ฐจ ๋ฆฌ์ŠคํŠธ : ๋ฐฐ์—ด์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„๋œ ๋ฆฌ์ŠคํŠธ
         ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ : ๋ฉ”๋ชจ๋ฆฌ์˜ ๋™์ ํ• ๋‹น์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„๋œ ๋ฆฌ์ŠคํŠธ

     

    ๊ตฌํ˜„ ๋ฐฉ๋ฒ•

    1. 1์ฐจ์› ๋ฐฐ์—ด์— ํ•ญ๋ณต๋“ค์„ ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅํ•œ๋‹ค
    2. ๋ฐ์ดํ„ฐ์˜ ์ข…๋ฅ˜์™€ ๊ตฌ์กฐ์— ๋”ฐ๋ผ ๊ตฌ์กฐํ™”๋œ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค์–ด ๋ฐฐ์—ด์— ์ €์žฅํ•  ์ˆ˜๋„ ์žˆ๋‹ค
    int [] L = {4,5,9,11 };
    

     

    ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๋ฐฉ๋ฒ•

    ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•ด ์›ํ•˜๋Š” ์œ„์น˜์˜ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค

    int a = L [1]; //L =5
    

    ์‚ฝ์ž… ์—ฐ์‚ฐ

    ์‚ฝ์ž… ์œ„์น˜ ๋‹ค์Œ์˜ ํ•ญ๋ชฉ๋“ค์„ ๋’ค๋กœ ์ด๋™ํ•ด์•ผ ํ•œ๋‹ค

    ์‚ญ์ œ ์—ฐ์‚ฐ

    ์‚ญ์ œ ์œ„์น˜ ๋‹ค์Œ ํ•ญ๋ชฉ๋“ค์„ ์•ž์œผ๋กœ ์ด๋™ํ•ด์•ผ ํ•œ๋‹ค

    ๋ฌธ์ œ์ 

    1. ๋‹จ์ˆœ ๋ฐฐ์—ด์„ ์ด์šฉํ•œ ์ˆœ์ฐจ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ตฌํ˜„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ์ž๋ฃŒ์˜ ์‚ฝ์ž…/ ์‚ญ์ œ ์—ฐ์‚ฐ ๊ณผ์ •์—์„œ ์—ฐ์†์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๋ฐฐ์—ด์„ ์œ„ํ•ด ์›์†Œ๋“ค์„ ์ด๋™์‹œํ‚ค๋Š” ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค
    2. ์›์†Œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ๊ณ , ์‚ฝ์ž…/์‚ญ์ œ ์—ฐ์‚ฐ์ด ๋งŽ์ด ์ผ์–ด๋‚˜๋ฉด ์ž‘์—… ์‹œ๊ฐ„์ด ํฌ๊ฒŒ ์ฆ๊ฐ€ํ•œ๋‹ค
    3. ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ ์ •ํ•ด์ ธ ์žˆ์œผ๋ฉด, ์‹ค์ œ๋กœ ์‚ฌ์šฉ๋  ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค ํฌ๊ฒŒ ํ• ๋‹นํ•˜์—ฌ ๋ฉ”๋กœ๋ฆฌ ๋‚ญ๋น„๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ , ๋ฐ˜๋Œ€๋กœ ๋” ์ž‘๊ฒŒ ์ •ํ•ด์ ธ์žˆ๋‹ค๋ฉด ๋‹ค์‹œ ๋ฐฐ์—ด์„ ๋ณต์‚ฌํ•˜๊ณ  ๋งŒ๋“œ๋Š” ์ž‘์—…์„ ํ•ด์•ผํ•œ๋‹ค

    ๋”ฐ๋ผ์„œ, ์ด๋Ÿฐ ๋ฌธ์ œ์ ์„ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š๊ธฐ ์œ„ํ•ด ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ (Linked List) ๋ฅผ ํ™œ์šฉํ•ด์•ผ ํ•œ๋‹ค

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

    ํŠน์„ฑ

    1. ์ž๋ฃŒ์˜ ๋…ผ๋ฆฌ์ ์ธ ์ˆœ์„œ์™€ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์˜ ๋ฌผ๋ฆฌ์ ์ธ ์ˆœ์„œ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š๊ณ , ๊ฐœ๋ณ„์ ์œผ๋กœ ์œ„์น˜ํ•˜๊ณ  ์žˆ๋Š” ๊ฐ ์›์†Œ๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ํ•˜๋‚˜์˜ ์ „์ฒด์ ์ธ ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ์ด๋ฃฌ๋‹ค
    2. ๋งํฌ(์ฐธ์กฐ๊ฐ’)๋ฅผ ํ†ตํ•ด ์›์†Œ์— ์ ‘๊ทผํ•˜๋ฏ€๋กœ, ์ˆœ์ฐจ ๋ฆฌ์ŠคํŠธ์—์„œ์ฒ˜๋Ÿผ ๋ฌผ๋ฆฌ์ ์ธ ์ˆœ์„ค๋ฅด ๋งž์ถ”๊ธฐ ์œ„ํ•œ ์ž‘์—…์ดํ•„์š” ์—†๋‹ค
    3. ์ž๋ฃŒ๊ตฌ์กฐ์˜ ํฌ๊ธฐ๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์–ด์„œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์‚ฌ์šฉ์ด ํšจ์œจ์ ์ด๋‹ค

    ๊ธฐ๋ณธ ๊ตฌ์กฐ

    <1> ๋…ธ๋“œ

    ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์—์„œ ํ•˜๋‚˜์˜ ์›์†Œ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” building block

    1. ๋ฐ์ดํ„ฐ ํ•„๋“œ :์›์†Œ๊ฐ’ ์ €์žฅ (์›์†Œ์˜ ์ข…๋ฅ˜๋‚˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜์—ฌ ์‚ฌ์šฉํ•จ)
    2. ๋งํฌํ•„๋“œ : ๋‹ค์Œ ๋…ธ๋“œ์˜ ์ฐธ์กฐ๊ฐ’ ์ €์žฅ

    <2> ํ—ค๋“œ

    ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ์ฒซ ๋…ธ๋“œ์— ๋Œ€ํ•œ ์ฐธ์กฐ๊ฐ’์„ ๊ฐ–๊ณ  ์žˆ์Œ

    ๐ŸงธTail ์ด ์—†์œผ๋ฉด ,๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” Head ๋ถ€ํ„ฐ iterate ๋‘ฌ์•ผ ํ•จ. ๋”ฐ๋ผ์„œ tail ์„ ๋”ํ•ด์„œ ๊ด€๋ฆฌํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

    <1> ๋‹จ์ˆœ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ

    Singly Linked List

    ์—ฐ๊ฒฐ ๊ตฌ์กฐ

    ๋งํฌ๋ฅผ ํ•œ๊ฐœ๋งŒ ์œ ์ง€ํ•˜๋Š” ๋ฆฌ์ŠคํŠธ

    1. ํ—ค๋“œ๊ฐ€ ๊ฐ€์žฅ ์•ž์˜ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ , ๋งํฌํ•„๋“œ๊ฐ€ ์—ฐ์†์ ์œผ๋กœ ๋‹ค์Œ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค
    2. ๋งํฌ๊ฐ€ null ์ธ ๋…ธ๋“œ๊ฐ€ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์˜ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ์ด๋‹ค

    ์‚ฝ์ž…

    Case 1: Empty

    ๊ณต๋ฐฑ ๋ฆฌ์ŠคํŠธ์— 'A' ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ

    Case 2: !Empty

    1. ์ฒซ๋ฒˆ์งธ์— ์‚ฝ์ž… 'A' ๋ฅผ ์›์†Œ๋กœ ๊ฐ–๊ณ  ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ์˜ ์ฒซ๋ฒˆ์งธ์— 'C' ๋…ธ๋“œ๋ฅผ ์‚ฝ์ž…ํ•  ๋•Œ

       2. ๋งˆ์ง€๋ง‰์— ์‚ฝ์ž… 'C', 'A'๋ฅผ ์›์†Œ๋กœ ๊ฐ–๊ณ  ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ์˜ ๋งˆ์ง€๋ง‰์— 'D' ๋…ธ๋“œ๋ฅผ ์‚ฝ์ž…ํ•  ๋•Œ

       3. ์ค‘๊ฐ„์— ์‚ฝ์ž…ํ•  ๋•Œ 'C', 'A', 'D' ๋ฅผ ์›์†Œ๋กœ ๊ฐ–๊ณ  ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ์˜ ๋‘๋ฒˆ์งธ์— 'B' ๋…ธ๋“œ๋ฅผ ์‚ฝ์ž…ํ•  ๋•Œ

    ์‚ญ์ œ

    Case 1: ์ค‘๊ฐ„์˜ ์›์†Œ ์‚ญ์ œ 'A' , 'B', 'C', 'D' ๋ฅผ ์›์†Œ๋กœ ๊ฐ–๊ณ  ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ์˜ 'B' ๋…ธ๋“œ๋ฅผ ์‚ญ์ œํ•  ๋•Œ

    Case 2: ์‚ญ์ œํ•˜๋ ค๋Š” ๋…ธ๋“œ์˜ ์•ž์ด head ์ผ ๊ฒฝ์šฐ 'C', 'A', 'D' ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆใ„ด๋Š” ๋ฆฌ์ŠคํŠธ์˜ 'C'๋ฅผ ์‚ญ์ œํ•  ๋•Œ

    ์žฅ๋‹จ์ 

    1. ์žฅ์  : ๊ด€๋ฆฌํ•  ๋งํฌ๊ฐ€ ํ•˜๋‚˜๋ฐ–์— ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๋Œ€์ ์œผ๋กœ ๊ด€๋ฆฌ๊ฐ€ ์‰ฝ๋‹ค
    2. ๋‹จ์  : ์‚ญ์ œ ์‹œ ์‚ญ์ œํ•˜๋ ค๋Š” ๋…ธ๋“œ์˜ ์ด์ „ ๋…ธ๋“œ๋ฅผ ๋‹ค์Œ ๋…ธ๋“œ์˜ ์ฐธ์กฐ๊ฐ’์„ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ์ˆ˜์ •ํ•ด์•ผํ•จ
    728x90
    ๋ฐ˜์‘ํ˜•

    '๐Ÿ““ STUDY > JAVA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

    1์ฐจ์› ๋ฐฐ์—ด  (0) 2022.05.18
    Tree  (0) 2022.05.18
    QUEUE  (0) 2022.05.18
    ์บก์Šํ™”  (0) 2022.05.17
    ๋‹คํ˜•์„ฑ  (0) 2022.05.17

    ๋Œ“๊ธ€