반응형
[ 구조체(C) 및 클래스(C++) 두가지 방식으로 구현하는 연결 리스트 ]
두 노드의 연결은 아래 그림과 같은 방식으로 이루어 진다.
이 과정을 소스코드로 표현 하면 다음과 같다.
[ 구조체를 통한 표현 ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #include <stdio.h> typedef struct Node { int data; Node *next; }node; int main() { node node1; node node2; node2.data = 123; node1.next = &node2; printf("(node1.next)->data :: %d \n", (node1.next)->data); // 이때 node1.next->data도 같은 의미이다. 하지만 ( )를 통한 오해를 할 수 있는 경우를 줄이는 것을 추천한다. return 0; } | Crocus |
[ 결과 화면 ]
[ 클래스를 통한 표현 ]
클래스는 private 선언이 되는순간 클래스 내부에서 함수를 통하여 private 접근 혹은
private 선언이 아닌 public 선언으로 바꾸지 않는 한 외부에서 접근이 불가능 하게된다.
따라서 클래스는 다음과 같이 제작한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | #include <iostream> using namespace std; class node { private: int data; // 데이터를 담을 공간 node *next; // 연결의 도구 public: void inputData(node *_node) { _node->data = 234; } void doNext(node *node_1, node *node_2) { node_1->next = node_2; } void see(node *_node) { cout << _node->next->data << endl; } }; // public로 하면 조금 더 편하지만, 코드의 보안을 높이기 위해서는 private를 이용하는것을 습관화 한다. int main() { node node1; node node2; node2.inputData(&node2); node1.doNext(&node1,&node2); // 서로의 data와 *next는 int main 즉, 외부에서 다룰 수 없으므로 // 주소값과 함께 클래스 내부로 가져간다. node1.see(&node1); return 0; } | Crocus |
구조체에 비해서 번거롭지 않다고하면 거짓말이겠지만,
클래스는 객체지향을 위한 중요한 매개체이므로 클래스를 다루는 법은 꼭 알아야 한다.
반응형
'Applied > 자료구조' 카테고리의 다른 글
자료구조 코딩 시 주의사항 (0) | 2016.05.03 |
---|---|
연결 리스트(Linked List) 개념 (3) (0) | 2016.05.03 |
연결 리스트(Linked List) 개념 (1) (0) | 2016.05.03 |
트리(Tree) 용어 (2) (0) | 2016.05.01 |
트리(Tree) 용어 (1) (0) | 2016.04.30 |