알고리즘/알고리즘+자료구조

[자료구조] 연결리스트 구현하기 (C++)

무하지 2022. 3. 8. 22:34
반응형

C++을 이용해 연결리스트를 구현합니다.

 

#include <iostream>

struct node
{
    int data;
    node *next;
};

struct linked_list
{
    node *head = new node;
    node *current = new node;

    linked_list()
    {
        current = head;
    }

    // 맨 뒤에 노드를 추가
    void append(int data)
    {
        node *new_node = new node;
        new_node->data = data;
        current->next = new_node;
        current = new_node;
    }

    // n번째 노드 뒤에 노드 삽입
    void insert(int n, int data)
    {
        node *new_node = new node;
        node *prev = new node;
        new_node->data = data;
        prev = head;

        // n-1 번째 노드까지 접근
        for (int i = 0; i < n + 1; i++)
        {
            prev = prev->next;
        }
        // prev의 next를 new_node의 next로 설정
        new_node->next = prev->next;
        // prev의 next를 new_node로 설정
        prev->next = new_node;
    }

    // n번째 노드의 데이터를 가져옵니다.
    int get(int n)
    {
        node *node = head;
        for (int i = 0; i < n + 1; i++)
        {
            node = node->next;
        }
        return node->data;
    }
};

int main()
{
    linked_list my_linked_list;
    for (int i = 0; i < 10; i++)
    {
        my_linked_list.append(i);
    }

    for (int i = 0; i < 10; i++)
    {
        std::cout << my_linked_list.get(i);
    }

    my_linked_list.insert(4, 777);

    std::cout << '\n';
    for (int i = 0; i < 11; i++)
    {
        std::cout << my_linked_list.get(i);
    }
}
반응형