상세 컨텐츠

본문 제목

Linked_list [data_struct]

개발생활/DataStructure

by 한국인맛집 2017. 5. 22. 23:26

본문

반응형
자료구조 공부 링크드 리스트 구현




Header.h


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

}


반응형

'개발생활 > DataStructure' 카테고리의 다른 글

자료구조 기초  (0) 2017.12.06
Binary Search Tree 구현. 자료구조 공부  (0) 2017.06.08
Class 사용 Queue 구현  (0) 2017.05.25
Insertion_sort_ 구현  (0) 2017.05.25
[Data_Struct] Stack 구현  (0) 2017.05.23

관련글 더보기