[C++] LinkedList 구현하기 예제
[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 [개발이 하고 싶어요]
'기타 > C++' 카테고리의 다른 글
[C++] 생성자 타입변환과 explicit (0) | 2019.07.30 |
---|---|
[C++] 스마트 포인터, operator*(), operator->() 연산자 오버로딩 (0) | 2019.07.30 |
[C++] 연산자 오버로딩 정의 (operator) (0) | 2019.07.30 |
[C++] 파일 쓰기 예제 ofstream (0) | 2019.07.30 |
[C++] 왜 포인터는 하나의 타입밖에 가리킬 수 없는가? (0) | 2019.07.27 |
[C++] 비트 연산과 쉬프트 (>>, <<) (0) | 2019.07.27 |
[C++] 문자열 입력 getline()과 버퍼오버플로우 (0) | 2019.07.27 |
[C++] string 문자열을 배열에 복사하기 (0) | 2019.07.27 |