#include<cstdio>
#include<cstdlib>
struct Node {
//Node 구조체 생성
int data;
Node* next = nullptr;
};
//Node 는 int형 data변수와 Node* 형 next 를 가지고 있습니다.
class LinkedList {
private:
int list_Size = 0;
// list의 크기를 알려주는 정수
Node* first = new Node();
//리스트의 시작을 가리키는 Node* 형 first 생성
Node* getNode(int index) {
Node* node = first;
for (int i = 0; i <= index; i++) {
node = node->next;
}
return node;
}
// 인덱스 값에 있는 노드 를 가져오는 함수.
public:
// Node를 생성하는 함수.
Node* insertNode(int index, int data) {
Node* newNode = new Node();
newNode->data = data;
Node* previous = getNode(index - 1);
Node* current = previous->next;
newNode->next = current;
previous->next = newNode;
list_Size++;
return newNode;
}
// Node 를 지워주는 함수.
void removeNode(int index) {
Node* previousNode = getNode(index - 1);
Node* deleteNode = previousNode->next;
Node* nextNode = deleteNode->next;
delete deleteNode;
previousNode->next = nextNode;
list_Size--;
}
// 노드의 데이터를 가져오는 함수.
int getData(int index) {
return getNode(index)->data;
}
// 생성된 노드를 출력하는 함수.
void printList() {
Node* node = first->next;
while (node != nullptr) {
printf("->[%d] ", node->data);
node = node->next;
}
printf("\n");
}
// 소멸자/ 클래스가 소멸되면 Heap영역에 생성된 메모리 삭제역할.
~LinkedList() {
int _list_Size = list_Size;
for (int i = 0; i <= _list_Size; i++) {
remove(0);
}
delete first;
}
};
Source.cpp
#include"Header.h"
int main() {
LinkedList list1;
list1.insertNode(0, 10);
list1.insertNode(1, 3);
list1.insertNode(2, 13);
list1.insertNode(3, 9);
list1.removeNode(0);
list1.printList();
fgetc(stdin);
return 0;
}
자료구조 기초 (0) | 2017.12.06 |
---|---|
Binary Search Tree 구현. 자료구조 공부 (31) | 2017.06.08 |
Class 사용 Queue 구현 (0) | 2017.05.25 |
Insertion_sort_ 구현 (0) | 2017.05.25 |
[Data_Struct] Stack 구현 (0) | 2017.05.23 |