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

Posted at 2014. 12. 13. 14:34 | Posted in C++



facebook에 글올리기



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



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


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


 Colored By Color Scripter


#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;
}


이웃추가
facebook에 글올리기

Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기