영넌 개발로그
[C++ 기초] 객체 참조 / 객체 참조 포인터 / this 포인터 / SLL 구현 본문
* this ?
객체를 만들었을 때 기본적으로 그 객체를 가르키는 포인터는 this 이다.
클래스 내부에서만 사용되고, 자기자신을 가르킨다.
SLL 구현
- Node를 SLL에 붙이는 코드를 Node가 갖도록 한다. (자기 스스로 붙이기)
1. class를 node
#include <iostream>
using namespace std;
class Node {
public:
int n;
Node* next;
Node(int v) : n(v), next(0)
{
}
void addToSLL(Node *& _head) {
if (_head == 0) {
_head = this;
}
else {
Node* temp = _head;
while (temp->next != 0) {
temp = temp->next;
}
temp->next = this;
}
}
void showN() {
cout << "n is: " << n << endl;
}
};
Node* head = 0;
int main()
{
Node a(77);
Node b(88);
Node*& r_head = head;
a.addToSLL(r_head); //r_head가 가르키는 sll에 가서 붙어
b.addToSLL(r_head);
head->showN();
head->next->showN();
return 0;
}
2. class를 SLL
#include <iostream>
using namespace std;
class Node {
public:
int n;
Node* next;
Node(int v) : n(v), next(0)
{
}
void addToSLL(Node *& _head) {
if (_head == 0) {
_head = this;
}
else {
Node* temp = _head;
while (temp->next != 0) {
temp = temp->next;
}
temp->next = this;
}
}
void showN() {
cout << "n is: " << n << endl;
}
};
Node* head = 0;
class My_SLL {
public:
Node* head;
Node* last;
int cnt; //SLL이 데이터가 몇개인지
//Constructor
My_SLL() : head(0), last(0), cnt(0) {}
void addNode(Node* _new_one)
{
if (head == 0) {
head = _new_one;
last = _new_one;
cnt = 1;
}
else {
last->next = _new_one;
last = _new_one;
cnt += 1;
}
}
//SLL에 들어있는 모든 node들을 보여주는 함수
void showALL() {
Node* temp = head;
if (cnt == 0) {
cout << "NO NODE" << endl;
return;
}
while (temp != 0) {
cout << temp->n << endl;
temp = temp->next;
}
}
};
int main()
{
Node* a = new Node(777);
Node* b = new Node(888);
My_SLL my_sll;
my_sll.addNode(a);
my_sll.addNode(b);
my_sll.showALL();
Node* c = new Node(999);
Node*& r_head = my_sll.head;
c->addToSLL(r_head);
my_sll.showALL();
return 0;
}
'코딩 > C++' 카테고리의 다른 글
[C++ 기초] class overloading / 헤더파일 만들어 쓰기 / access control (public, private) (0) | 2020.10.27 |
---|---|
[C++ 기초] 객체의 이해, 원 그리기 (0) | 2020.10.26 |
[C ++ 기초] 함수 기본 파라미터 , OOP (객체기반프로그래밍), 생성자 constructor (0) | 2020.10.26 |
[C++ 기초] 참조 변수 Reference variable (0) | 2020.10.26 |
Comments