[C++] LinkedList 구현하기 예제

2019. 7. 30. 00:03 기타/C++

[C++] LinkedList 구현하기 예제



마지막 노드가 next 로 다시 head를 가리키도록 환형 구조로 작성했다.


노드나 리스트를 삭제할 때 delete 하여 메모리를 해제해줘야 한다.



#include <iostream>

struct Node{

    Node* prev;
    Node* next;

    void* data;
};

struct List{
    Node* head;
};

List* createList(){

    Node* head = new Node;
    head->prev = head;
    head->next = head;
    head->data = 0;

    List* list = new List;
    list->head = head;

    return list;
}

void insertNodeAfter(Node* node, void* data){
    
    Node* before = node;
    Node* after = node->next;

    Node* newNode = new Node;
    newNode->data = data;
    newNode->next = after;
    newNode->prev = before;

    after->prev = newNode;
    before->next = newNode;
}

void removeNode(Node* node, bool deleteData){

    Node* before = node->prev;
    Node* after = node->next;

    before->next = after;
    after->prev = before;

    if (deleteData)
        delete node->data;
    delete node;
}

void RemoveList(List* list, bool deleteData){
    
    Node* current = list->head;

    do{
        Node* next = current->next;
        if (deleteData)
            delete current->data;
        delete current;

        current = next;

    } while (current != list->head);

    delete list;
}



출처: https://hyeonstorage.tistory.com/309?category=601868 [개발이 하고 싶어요]