๋ฐ˜์‘ํ˜•
JuneBee
JuneBee
JuneBee
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (102)
    • ๐Ÿ‘” JOB (10)
      • ์ „ํ˜• ํ›„๊ธฐ (10)
    • ๐ŸŽฎ GAME (9)
      • ์ ค๋‹ค | ์™•๊ตญ์˜ ๋ˆˆ๋ฌผ ๊ฒŒ์ž„ ์ผ๊ธฐ (9)
    • ๐Ÿ““ STUDY (60)
      • JAVA (15)
      • TIL (2)
      • FASTCAMPUS (32)
      • ํ™˜๊ฒฝ์„ค์ • (2)
      • YOCTO (1)
      • OS (4)
      • ๋ฆฌ์•กํŠธ ๋„ค์ดํ‹ฐ๋ธŒ ์ธ ์•ก์…˜ (2)
    • ๐ŸŽงDAILY (6)
    • ๐Ÿ‡ฉ๐Ÿ‡ช GERMAN (17)
      • ๋Œ€ํ•™์› ์ง€์› (3)
      • ์ง€์› ํ›„๊ธฐ (11)
      • ๋…์ผ์–ด ์‹œํ—˜ (3)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ์ผ์ƒ

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ๋…์ผ์œ ํ•™
  • Java
  • ์ทจ์—…์ค€๋น„
  • ์ ค๋‹ค
  • ์„์‚ฌ
  • ์ž๋ฃŒ๊ตฌ์กฐ
  • C/C++
  • telc
  • ์™•๊ตญ์˜๋ˆˆ๋ฌผ
  • sort
  • ํฌ๋ฃจ์Šค์นผ
  • ๋ชจํ—˜์ผ๊ธฐ
  • ๊ฒŒ์ž„์ผ๊ธฐ
  • ํŒจ์ŠคํŠธ์บ ํผ์Šคํ›„๊ธฐ
  • ์ •๋ ฌ
  • ์ง์žฅ์ธ์ž๊ธฐ๊ณ„๋ฐœ
  • ํŒจ์ŠคํŠธ์บ ํผ์Šค
  • B1
  • ํ•œ๋ฒˆ์—๋๋‚ด๋Š”์ฝ”๋”ฉํ…Œ์ŠคํŠธ369JavaํŽธ์ดˆ๊ฒฉ์ฐจํŒจํ‚ค์ง€Online.
  • ๋ฐฑํŠธ๋ž˜ํ‚น
  • ํŒจ์บ ์ฑŒ๋ฆฐ์ง€
  • ๋…์ผ์–ด
  • ์™•๋ˆˆ
  • ์œ ํ•™
  • SSAFY
  • ์ง์žฅ์ธ์ธ๊ฐ•
  • ์‹ธํ”ผ
  • ํ”Œ๋ ˆ์ด์ผ๊ธฐ
  • ๋…์ผ
  • bruteforce

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
JuneBee

JuneBee

ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 18์ผ์ฐจ
๐Ÿ““ STUDY/FASTCAMPUS

ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 18์ผ์ฐจ

2021. 11. 18. 22:51
728x90
๋ฐ˜์‘ํ˜•

๊ฐ•์˜ ๋‚ ์งœ: 11/18/2021
์‹œ์ฒญ ๊ฐ•์˜: ์€๊ทผํžˆ ์–ด๋ ค์šด ์ž๋ฃŒ๊ตฌ์กฐ : ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ

LinkedList

์ •์˜

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

  1. ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋Š” ์ธ๋ฑ์Šค๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ฒ€์ƒ‰ ๋ฐ ์ˆ˜์ • ์‹œ ์ฒซ ๋ฒˆ์งธ ๋…ธ๋“œ๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•ด์•ผ ํ•œ๋‹ค → ์‹œ๊ฐ„ ๋ณต์žก๋„ : O(1)
  2. ํŠน์ • ์œ„์น˜(index)๋กœ ์‚ฝ์ž…/์‚ญ์ œ/ํƒ์ƒ‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” O(n) ์ด ๊ฑธ๋ฆฐ๋‹ค. ๋”ฐ๋ผ์„œ, ํƒ์ƒ‰์„ ์ž์ฃผํ•ด์•ผ ํ•œ๋‹ค๋ฉด ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๊ณ , ๋ฐ์ดํ„ฐ์˜ ์ถ”๊ฐ€/์‚ญ์ œ๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ์— ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

singly linked list

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋Š” ๋‹จ์ผ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ, ์ด์ค‘ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ, ์›ํ˜• ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๊ฐ€ ์žˆ๋‹ค.

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

๋‹จ์ผ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋Š” ๋ฐ์ดํ„ฐ์˜ ์š”์†Œ๋ฅผ ์„ ํ˜•์ ์œผ๋กœ ์—ฐ๊ฒฐํ•œ ๊ฒƒ์ด๋‹ค.

๋‹จ์ผ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ: ํ•˜๋‚˜์˜ ๋…ธ๋“œ์— ํ•œ ๊ฐœ์˜ ํฌ์ธํ„ฐ์™€ ๋ฐ์ดํ„ฐ ๊ฐ’์ด ์ €์žฅ๋œ๋‹ค

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

๊ตฌํ˜„

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

image

class LinkedList {
    Node head; 

    class Node {
        int data;
        Node next;

        Node(int d) { data = d; } //next ๋Š” null ๋กœ ์ดˆ๊ธฐํ™”
    }
}

๋งจ ์•ž์— ๋…ธ๋“œ ์ถ”๊ฐ€

// ๋งจ ์•ž์— ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์ฝ”๋“œ : ์ƒˆ๋กœ์šด ํ•ด๋“œ ์ƒ์„ฑ
public void push(int new_data)
{
    Node new_node = new Node(new_data);

    new_node.next = head; //์ƒˆ ๋…ธ๋“œ๊ฐ€ ๊ธฐ์กด์˜ ํ—ค๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ํ•ด์ค€๋‹ค

    head = new_node;      //์ถ”๊ฐ€ํ•œ ๋…ธ๋“œ๋ฅผ ํ—ค๋“œ๋กœ ์ง€์ •ํ•œ๋‹ค
}

image

ํŠน์ • ๋…ธ๋“œ ๋’ค์— ์ƒˆ๋กœ์šด ๋…ธ๋“œ ์ถ”๊ฐ€

//์ฃผ์–ด์ง„ ๋…ธ๋“œ ๋’ค์— ์ƒˆ ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ตฌํ˜„์ด๋‹ค
//์ด์ „ ๋…ธ๋“œ๊ฐ€ ๋น„์–ด์žˆ์œผ๋ฉด ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†๋‹ค
public void insertAfter(Node prev_node, int new_data)
{
    if (prev_node == null) //๋น„์–ด์žˆ์œผ๋ฉด ์ถ”๊ฐ€ ๋ถˆ๊ฐ€๋Šฅ
    {
        System.out.println("The given previous node cannot be null");
        return;
    }

    Node new_node = new Node(new_data);

    //ex: 1 _4(์ถ”๊ฐ€)_ 2 3 : 1์ด 2๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์—ˆ๋‹ค๋ฉด, 4๊ฐ€ 2๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ํ•ด์ค€๋‹ค
    new_node.next = prev_node.next; //๋…ธ๋“œ์˜ ํฌ์ธํ„ฐ๊ฐ€ ์ด์ „๋…ธ๋“œ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋˜ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒํ•œ๋‹ค

        //ex: 1 _4(์ถ”๊ฐ€)_2 3 : 1์€ ๊ธฐ์กด์— 2๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์—ˆ์ง€๋งŒ, 4๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ๋ณ€๊ฒฝํ•œ๋‹ค 
      prev_node.next = new_node;      //์ด์ „ ๋…ธ๋“œ์˜ ํฌ์ธํ„ฐ๊ฐ€ ์ƒˆ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ํ•œ๋‹ค
}

image

 

image

๋งจ ๋’ค์— ์ƒˆ๋กœ์šด ๋…ธ๋“œ ์ถ”๊ฐ€

//๋งจ ๋’ค์— ์ถ”๊ฐ€
public void append(int new_data)
{
    Node new_node = new Node(new_data);
    Node last = head; //while ์—์„œ ์“ฐ์ž„ : ํ˜„์žฌ์˜ head๋ฅผ ์ง€์ •

    if (head == null)  //๋ฆฌ์ŠคํŠธ๊ฐ€ ๋น„์–ด์žˆ๋‹ค๋ฉด ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ๋…ธ๋“œ๊ฐ€ ํ—ค๋“œ๊ฐ€ ๋œ๋‹ค
    {
        head = new Node(new_data);
        return;
    }

    new_node.next = null; //๋…ธ๋“œ๋ฅผ ๋งจ ๋งˆ์ง€๋ง‰์— ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํฌ์ธํ„ฐ๋Š” null์„ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ํ•ด์ค€๋‹ค
    //else ๋ฌธ ๋ถ€๋ถ„   
    while (last.next != null)  //ํ—ค๋“œ๊ฐ€ ๋‹ค์Œ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค๋ฉด
        last = last.next;      //last(์ฒ˜์Œ์— head๋กœ ์ดˆ๊ธฐํ™”)๋ฅผ ๋‹ค์Œ ๋…ธ๋“œ๋กœ ์„ค์ •->iterate ํ•œ๋‹ค

    last.next = new_node; //๋งˆ์ง€๋ง‰ ๋…ธ๋“œ๊ฐ€ ์ƒˆ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ํ•ด์ค€๋‹ค
    return; //free the memory
}

image

๋…ธ๋“œ ์‚ญ์ œ

//์ฃผ์–ด์ง„ key๋ฅผ ์‚ญ์ œ
void deleteNode(int key)
    {
        Node temp = head, prev = null; //head ์ €์žฅ

        if (temp != null && temp.data == key) { //๋…ธ๋“œ๊ฐ€ head๊ณ  head ๋‹ค์Œ๊ฐ’์ด ์กด์žฌํ• ๋•Œ
            head = temp.next; // ํ—ค๋“œ๋ฅผ ๋‹ค์Œ ๊ฐ’์œผ๋กœ ๊ต์ฒดํ•œ๋‹ค
            return;
        }

        while (temp != null && temp.data != key) { //iterate
            prev = temp;
            temp = temp.next;
        }

        if (temp == null) //๋ฆฌ์ŠคํŠธ์— ์ฃผ์–ด์ง„ key๊ฐ€ ์—†๋‹ค -> escape
            return;

        // ex: 1 2 3(์‚ญ์ œ) 4 : 2์˜ ํฌ์ธํ„ฐ๋ฅผ 3์ด ๊ธฐ์กด์— ๊ฐ€๋ฆฌํ‚ค๋˜ 4๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒํ•œ๋‹ค
        prev.next = temp.next; //์ด์ „ ๋…ธ๋“œ์˜ ํฌ์ธํ„ฐ๊ฐ€ ์‚ญ์ œํ•  ํฌ์ธํ„ฐ์˜ ๋‹ค์Œ๊ฐ’์„ ๊ฐ€๋ฆฌํ‚ค๊ฒŒํ•œ๋‹ค
    }

์œ„ ์ฝ”๋“œ์—์„œ ์‚ญ์ œํ•  ๋…ธ๋“œ๊ฐ€ ํ—ค๋“œ์ผ ๊ฒฝ์šฐ ์„ค๋ช…:

image

 if (temp != null && temp.data == key) { //๋…ธ๋“œ๊ฐ€ head๊ณ  head ๋‹ค์Œ๊ฐ’์ด ์กด์žฌํ• ๋•Œ
            head = temp.next; // ํ—ค๋“œ๋ฅผ ๋‹ค์Œ ๊ฐ’์œผ๋กœ ๊ต์ฒดํ•œ๋‹ค
            return;
        }

ํ—ค๋“œ๊ฐ€ ์•„๋‹Œ ๋ถ€๋ถ„ - while loop ๊ตฌํ˜„ ์„ค๋ช… :

image

 while (temp != null && temp.data != key) { //iterate
            prev = temp;
            temp = temp.next;
        }

        if (temp == null) //๋ฆฌ์ŠคํŠธ์— ์ฃผ์–ด์ง„ key๊ฐ€ ์—†๋‹ค -> escape
            return;

        // ex: 1 2 3(์‚ญ์ œ) 4 : 2์˜ ํฌ์ธํ„ฐ๋ฅผ 3์ด ๊ธฐ์กด์— ๊ฐ€๋ฆฌํ‚ค๋˜ 4๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒํ•œ๋‹ค
        prev.next = temp.next;

source code reference: Geeks for Geeks - Linkedlist


ํŒจ์ŠคํŠธ์บ ํผ์Šค ํ™˜๊ธ‰ ์ฑŒ๋ฆฐ์ง€ ๋ฐ”๋กœ๊ฐ€๊ธฐ๐Ÿ‘‰ https://bit.ly/3FVdhDa

 

์ˆ˜๊ฐ•๋ฃŒ 100% ํ™˜๊ธ‰ ์ฑŒ๋ฆฐ์ง€ | ํŒจ์ŠคํŠธ์บ ํผ์Šค

๋”ฑ 5์ผ๊ฐ„ ์ง„ํ–‰๋˜๋Š” ํ™˜๊ธ‰์ฑŒ๋ฆฐ์ง€๋กœ ์ˆ˜๊ฐ•๋ฃŒ 100% ํ™˜๊ธ‰๋ฐ›์œผ์„ธ์š”! ๋” ๋Šฆ๊ธฐ์ „์— ์ž๊ธฐ๊ณ„๋ฐœ ๋ง‰์ฐจ ํƒ‘์Šน!

fastcampus.co.kr

๋ณธ ํฌ์ŠคํŒ…์€ ํŒจ์ŠคํŠธ์บ ํผ์Šค ํ™˜๊ธ‰ ์ฑŒ๋ฆฐ์ง€ ์ฐธ์—ฌ๋ฅผ ์œ„ํ•ด ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•

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

ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 20์ผ์ฐจ  (0) 2021.11.20
ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 19์ผ์ฐจ  (1) 2021.11.19
ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 17์ผ์ฐจ  (1) 2021.11.17
ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 16์ผ์ฐจ  (1) 2021.11.16
ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 15์ผ์ฐจ  (0) 2021.11.15
    '๐Ÿ““ STUDY/FASTCAMPUS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 20์ผ์ฐจ
    • ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 19์ผ์ฐจ
    • ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 17์ผ์ฐจ
    • ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 16์ผ์ฐจ
    JuneBee
    JuneBee
    โ‚Šหš.๐ŸŽง๐Ÿ““ ๊ธฐ๋ก์šฉ ๋ธ”๋กœ๊ทธ ๐“‚ƒ๐Ÿ–Š

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”