dongeui university data structures 동의대학교 멀티미디어공학과 이광의교수 01.3:...

34
DONGEUI UNIVERSITY Data structures 동동동동동 동동동동동동동동 동동동동동 01.3: C++ pointers

Upload: joao-pedro-melgaco-arantes

Post on 07-Apr-2016

248 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

DONGEUIUNIVERSITY

Data structures

동의대학교 멀티미디어공학과 이광의교수

01.3: C++ pointers

Page 2: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

[email protected]

Today’s topic 자료구조의 정의

► 정의 1: 자료구조는 자료를 효율적으로 이용할 수 있도록 컴퓨터에 저장하는 방법이다 .

► 정의 2: 자료구조는 추상자료형이다 .► 정의 3: 자료구조는 잘 알려지고 유용한 추상자료형이다 .

C++ 클래스 : 추상자료형의 구현► 클래스 기초► 클래스 구현 예 1: 채널목록 추상자료형의 ( 정렬되지 않은 목록 ) 구현► 클래스 구현 예 2: 채널목록 추상자료형의 ( 채널이름 순으로 정렬된

목록 ) 구현

포인터► 포인터 기초► 포인터 활용 예 1

Dept. of Multimedia Engineering, DongEui Univ.(2)

Page 3: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

[email protected]

Fundamentals of pointers 포인터 ( 포인터변수 ) 란 무엇인가 ?

► 메모리 번지를 저장할 수 있는 변수► 다른 변수의 위치를 저장할 수 있는 변수► 또 다른 정의

포인터는 왜 사용하는가 ?► 메모리를 동적으로 할당 받을 때► 매개변수가 변경되어 돌려지기를 원할 때► 이름 없는 변수의 사용► 또 다른 이유

Dept. of Multimedia Engineering, DongEui Univ.(3)

Page 4: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

[email protected]

Fundamentals of pointers 포인터의 사용 예

► 단순변수의 포인터 활용 예

void main ( ) { int a = 3; int *pa = &a; cout << a << “ ” << *pa << endl;

int arr[10]; arr[2] = 3; cout << arr[2] << endl;

int * prr; prr = new int[10] // int * prr = new int[10]; prr[2] = 3; cout << prr[2] << endl;}

Dept. of Multimedia Engineering, DongEui Univ.(4)

3pa a

[0]

[1]

3 [2]

[3]

[4]

arr

[0]

[1]

3 [2]

[3]

[4]

prr

Page 5: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

[email protected]

Fundamentals of pointers 포인터의 사용 예

► 단순변수의 포인터 활용 예 : 동적 기억장소 할당

void main ( ) { int n; cin >> n; // int arr[n] 오류 !!

int * prr = new int[n]; if (n>=3) { prr[2] = 4; cout << prr[2] << endl; }}

Dept. of Multimedia Engineering, DongEui Univ.(5)

[0]

[1]

4 [2]

[3]

[4]

prr

?prr

Page 6: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

[email protected]

Fundamentals of pointers 포인터의 사용 예

► 단순변수의 포인터 활용 예 : call by value 값에 의한 호출

void swap (int x, int y) { int tmp = x; x = y; y = tmp;}

void main ( ) { int a = 3; b = 4; ◀ swap (a, b); cout << a << “ ” << b << endl;}

Dept. of Multimedia Engineering, DongEui Univ.(6)

4 b3a

Page 7: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

[email protected]

Fundamentals of pointers 포인터의 사용 예

► 단순변수의 포인터 활용 예 : call by value 값에 의한 호출

void swap (int x, int y) { ◀ int tmp = x; x = y; y = tmp;}

void main ( ) { int a = 3; b = 4; swap (a, b); ◀ cout << a << “ ” << b << endl;}

Dept. of Multimedia Engineering, DongEui Univ.(7)

4 b3a

4 y3x

Page 8: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

[email protected]

Fundamentals of pointers 포인터의 사용 예

► 단순변수의 포인터 활용 예 : call by value 값에 의한 호출

void swap (int x, int y) { int tmp = x; ◀ x = y; ◀ y = tmp; ◀}

void main ( ) { int a = 3; b = 4; swap (a, b); ◀ cout << a << “ ” << b << endl;}

Dept. of Multimedia Engineering, DongEui Univ.(8)

4 b3a

4 >> 3 y3 >> 4x

3tmp

Page 9: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

[email protected]

Fundamentals of pointers 포인터의 사용 예

► 단순변수의 포인터 활용 예 : call by value 값에 의한 호출

void swap (int x, int y) { int tmp = x; x = y; y = tmp;}

void main ( ) { int a = 3; b = 4; swap (a, b); cout << a << “ ” << b << endl; ◀}// 출력은 3 4

Dept. of Multimedia Engineering, DongEui Univ.(9)

4 b3a

4 >> 3 y3 >> 4x

3tmp

Page 10: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

[email protected]

Fundamentals of pointers 포인터의 사용 예

► 단순변수의 포인터 활용 예 : call by reference 참조에 의한 호출

void swap (int *x, int *y) { int tmp = *x; *x = *y; *y = tmp;}

void main ( ) { int a = 3; b = 4; ◀ swap (&a, &b); cout << a << “ ” << b << endl;}// 출력은 4 3

Dept. of Multimedia Engineering, DongEui Univ.(10)

4 b3a

Page 11: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

[email protected]

Fundamentals of pointers 포인터의 사용 예

► 단순변수의 포인터 활용 예 : call by reference 참조에 의한 호출

void swap (int *x, int *y) { ◀ int tmp = *x; *x = *y; *y = tmp;}

void main ( ) { int a = 3; b = 4; swap (&a, &b); ◀ cout << a << “ ” << b << endl;}

Dept. of Multimedia Engineering, DongEui Univ.(11)

4 b3a

yx

Page 12: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

[email protected]

Fundamentals of pointers 포인터의 사용 예

► 단순변수의 포인터 활용 예 : call by reference 참조에 의한 호출

void swap (int *x, int *y) { int tmp = *x; ◀ *x = *y; ◀ *y = tmp; ◀}

void main ( ) { int a = 3; b = 4; swap (&a, &b); ◀ cout << a << “ ” << b << endl;}

Dept. of Multimedia Engineering, DongEui Univ.(12)

4 >> 3 b3 >> 4a

yx

3tmp

Page 13: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

[email protected]

Fundamentals of pointers 포인터의 사용 예

► 단순변수의 포인터 활용 예 : call by reference 참조에 의한 호출

void swap (int *x, int *y) { int tmp = *x; *x = *y; *y = tmp;}

void main ( ) { int a = 3; b = 4; swap (&a, &b); cout << a << “ ” << b << endl; ◀}// 출력은 4 3

Dept. of Multimedia Engineering, DongEui Univ.(13)

4 >> 3 b3 >> 4a

yx

3tmp

Page 14: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

[email protected]

Another implementation of channel list 포인터의 활용

► 포인터 클래스 작성 : node 노드

class Node { …public: Node * ptr1 = new Node(14, “ 동의 TV”);

◀ Node(int nu, string na, Node *ptr=0) { Node * ptr2 = new Node(2, “CJ 홈쇼

핑” ); chn = nu; name = na; nptr = ptr; Node node3(7, “ 시네마 TV”); } node3.nptr = ptr2;public: ptr2->nptr = ptr1; // (*ptr2).nptr = ptr1; int chn; cout << node3.nptr->nptr->chn << endl; string name; delete ptr1; class Node * nptr; node3.nptr->next = 0; ptr1=0;}; …

Dept. of Multimedia Engineering, DongEui Univ.(14)

0

동의 TV

14

(*ptr1).chn

(*ptr1).name

(*ptr1).nptr

ptr1

Page 15: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

[email protected]

Another implementation of channel list 포인터의 활용

► 포인터 클래스 작성 : node 노드

class Node { …public: Node * ptr1 = new Node(14, “ 동의 TV”); Node(int nu, string na, Node *ptr=0) { Node * ptr2 = new Node(2, “CJ 홈쇼

핑” ); ◀ chn = nu; name = na; nptr = ptr; Node node3(7, “ 시네마 TV”); } node3.nptr = ptr2;public: ptr2->nptr = ptr1; // (*ptr2).nptr = ptr1; int chn; cout << node3.nptr->nptr->chn << endl; string name; delete ptr1; class Node * nptr; node3.nptr->next = 0; ptr1=0;}; …

Dept. of Multimedia Engineering, DongEui Univ.(15)

0

동의 TV

14

0

CJ 홈쇼핑

2ptr1 ptr2

Page 16: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

[email protected]

Another implementation of channel list 포인터의 활용

► 포인터 클래스 작성 : node 노드

class Node { …public: Node * ptr1 = new Node(14, “ 동의 TV”); Node(int nu, string na, Node *ptr=0) { Node * ptr2 = new Node(2, “CJ 홈쇼

핑” ); chn = nu; name = na; nptr = ptr; Node node3(7, “ 시네마 TV”); ◀ } node3.nptr = ptr2;public: ptr2->nptr = ptr1; // (*ptr2).nptr = ptr1; int chn; cout << node3.nptr->nptr->chn << endl; string name; delete ptr1; class Node * nptr; node3.nptr->next = 0; ptr1=0;}; …

Dept. of Multimedia Engineering, DongEui Univ.(16)

0

동의 TV

14

0

CJ 홈쇼핑

2

0

시네마 TV

7

node3

ptr1 ptr2

Page 17: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

[email protected]

Another implementation of channel list 포인터의 활용

► 포인터 클래스 작성 : node 노드

class Node { …public: Node * ptr1 = new Node(14, “ 동의 TV”); Node(int nu, string na, Node *ptr=0) { Node * ptr2 = new Node(2, “CJ 홈쇼

핑” ); chn = nu; name = na; nptr = ptr; Node node3(7, “ 시네마 TV”); } node3.nptr = ptr2; ◀public: ptr2->nptr = ptr1; // (*ptr2).nptr = ptr1; int chn; cout << node3.nptr->nptr->chn << endl; string name; delete ptr1; class Node * nptr; node3.nptr->next = 0; ptr1=0;}; …

Dept. of Multimedia Engineering, DongEui Univ.(17)

0

동의 TV

14ptr1

0

CJ 홈쇼핑

2ptr2

시네마 TV

7

node3

Page 18: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

[email protected]

Another implementation of channel list 포인터의 활용

► 포인터 클래스 작성 : node 노드

class Node { …public: Node * ptr1 = new Node(14, “ 동의 TV”); Node(int nu, string na, Node *ptr=0) { Node * ptr2 = new Node(2, “CJ 홈쇼

핑” ); chn = nu; name = na; nptr = ptr; Node node3(7, “ 시네마 TV”); } node3.nptr = ptr2;public: ptr2->nptr = ptr1; // (*ptr2).nptr = ptr1;

◀ int chn; cout << node3.nptr->nptr->chn << endl;

◀ string name; delete ptr1; class Node * nptr; node3.nptr->next = 0; ptr1=0;}; …

Dept. of Multimedia Engineering, DongEui Univ.(18)

0

동의 TV

14ptr1

CJ 홈쇼핑

2ptr2

시네마 TV

7

node3

Page 19: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

[email protected]

Another implementation of channel list 포인터의 활용

► 포인터 클래스 작성 : node 노드

class Node { …public: Node * ptr1 = new Node(14, “ 동의 TV”); Node(int nu, string na, Node *ptr=0) { Node * ptr2 = new Node(2, “CJ 홈쇼

핑” ); chn = nu; name = na; nptr = ptr; Node node3(7, “ 시네마 TV”); } node3.nptr = ptr2;public: ptr2->nptr = ptr1; // (*ptr2).nptr = ptr1; int chn; cout << node3.nptr->nptr->chn << endl; string name; delete ptr1; ◀ class Node * nptr; node3.nptr->next = 0; ptr1=0;}; …

Dept. of Multimedia Engineering, DongEui Univ.(19)

0

동의 TV

14ptr1

CJ 홈쇼핑

2ptr2

시네마 TV

7

node3

Page 20: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

[email protected]

Another implementation of channel list 포인터의 활용

► 포인터 클래스 작성 : node 노드

class Node { …public: Node * ptr1 = new Node(14, “ 동의 TV”); Node(int nu, string na, Node *ptr=0) { Node * ptr2 = new Node(2, “CJ 홈쇼

핑” ); chn = nu; name = na; nptr = ptr; Node node3(7, “ 시네마 TV”); } node3.nptr = ptr2;public: ptr2->nptr = ptr1; // (*ptr2).nptr = ptr1; int chn; cout << node3.nptr->nptr->chn << endl; string name; delete ptr1; class Node * nptr; node3.nptr-> nptr = 0; ptr1=0; ◀★★★}; …

Dept. of Multimedia Engineering, DongEui Univ.(20)

0

동의 TV

140ptr1

0

CJ 홈쇼핑

2ptr2

시네마 TV

7

node3

Page 21: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

[email protected]

Another implementation of channel list 포인터의 활용

► 포인터 클래스 작성 : node list 노드목록

class Node { … } … class channelList { // NodeList channelList lst; ◀public: lst.addCh(7, “ 시네마 TV”); channelList ( ) { head = 0; }; lst.addCh(2, “CJ 홈쇼핑” ); string chNameOf (int nu); lst.addCh(14, “ 동의 TV”); void deleteNum (int nu); cout << “7: ”; void addCh (int nu, string na); cout << lst.chNameOf(7) << endl;private: lst.delete Num(2); Node * head; … };

Dept. of Multimedia Engineering, DongEui Univ.(21)

lst 0

lst.head

Page 22: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

[email protected]

Another implementation of channel list 포인터의 활용

► 포인터 클래스 작성 : node list 노드목록

class Node { … } … class channelList { // NodeList channelList lst;public: lst.addCh(7, “ 시네마 TV”); ◀ channelList ( ) { head = 0; }; lst.addCh(2, “CJ 홈쇼핑” ); string chNameOf (int nu); lst.addCh(14, “ 동의 TV”); void deleteNum (int nu); cout << “7: ”; void addCh (int nu, string na); cout << lst.chNameOf(7) << endl;private: lst.delete Num(2); Node * head; … };

Dept. of Multimedia Engineering, DongEui Univ.(22)

0

시네마 TV

7lst

Page 23: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

[email protected]

Another implementation of channel list 포인터의 활용

► 포인터 클래스 작성 : node list 노드목록

class Node { … } … class channelList { // NodeList channelList lst;public: lst.addCh(7, “ 시네마 TV”); channelList ( ) { head = 0; }; lst.addCh(2, “CJ 홈쇼핑” ); ◀ string chNameOf (int nu); lst.addCh(14, “ 동의 TV”); void deleteNum (int nu); cout << “7: ”; void addCh (int nu, string na); cout << lst.chNameOf(7) << endl;private: lst.delete Num(2); Node * head; … };

Dept. of Multimedia Engineering, DongEui Univ.(23)

0

시네마 TV

7lst

CJ 홈쇼핑

2

node3

Page 24: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

[email protected]

Another implementation of channel list 포인터의 활용

► 포인터 클래스 작성 : node list 노드목록

class Node { … } … class channelList { // NodeList channelList lst;public: lst.addCh(7, “ 시네마 TV”); channelList ( ) { head = 0; }; lst.addCh(2, “CJ 홈쇼핑” ); ◀ string chNameOf (int nu); lst.addCh(14, “ 동의 TV”); void deleteNum (int nu); cout << “7: ”; void addCh (int nu, string na); cout << lst.chNameOf(7) << endl;private: lst.delete Num(2); Node * head; … };

Dept. of Multimedia Engineering, DongEui Univ.(24)

0

시네마 TV

7lst

CJ 홈쇼핑

2

node3

Page 25: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

[email protected]

Another implementation of channel list 포인터의 활용

► 포인터 클래스 작성 : node list 노드목록

class Node { … } … class channelList { // NodeList channelList lst;public: lst.addCh(7, “ 시네마 TV”); channelList ( ) { head = 0; }; lst.addCh(2, “CJ 홈쇼핑” ); string chNameOf (int nu); lst.addCh(14, “ 동의 TV”); ◀ void deleteNum (int nu); cout << “7: ”; void addCh (int nu, string na); cout << lst.chNameOf(7) << endl;private: lst.delete Num(2); Node * head; … };

Dept. of Multimedia Engineering, DongEui Univ.(25)

0

시네마 TV

7lst

CJ 홈쇼핑

2

동의 TV

14

node3

Page 26: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

[email protected]

Another implementation of channel list 포인터의 활용

► 포인터 클래스 작성 : node list 노드목록

class Node { … } … class channelList { // NodeList channelList lst;public: lst.addCh(7, “ 시네마 TV”); channelList ( ) { head = 0; }; lst.addCh(2, “CJ 홈쇼핑” ); string chNameOf (int nu); lst.addCh(14, “ 동의 TV”); ◀ void deleteNum (int nu); cout << “7: ”; void addCh (int nu, string na); cout << lst.chNameOf(7) << endl;private: lst.delete Num(2); Node * head; … };

Dept. of Multimedia Engineering, DongEui Univ.(26)

0

시네마 TV

7lst

CJ 홈쇼핑

2

동의 TV

14

node3

Page 27: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

[email protected]

Another implementation of channel list 포인터의 활용

► 포인터 클래스 작성 : node list 노드목록

class Node { … } … class channelList { // NodeList channelList lst;public: lst.addCh(7, “ 시네마 TV”); channelList ( ) { head = 0; }; lst.addCh(2, “CJ 홈쇼핑” ); string chNameOf (int nu); lst.addCh(14, “ 동의 TV”); void deleteNum (int nu); cout << “7: ”; ◀ void addCh (int nu, string na); cout << lst.chNameOf(7) << endl; ◀private: lst.delete Num(2); Node * head; … };

Dept. of Multimedia Engineering, DongEui Univ.(27)

0

시네마 TV

7lst

CJ 홈쇼핑

2

동의 TV

14

node3

Page 28: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

[email protected]

Another implementation of channel list 포인터의 활용

► 포인터 클래스 작성 : node list 노드목록

class Node { … } … class channelList { // NodeList channelList lst;public: lst.addCh(7, “ 시네마 TV”); channelList ( ) { head = 0; }; lst.addCh(2, “CJ 홈쇼핑” ); string chNameOf (int nu); lst.addCh(14, “ 동의 TV”); void deleteNum (int nu); cout << “7: ”; void addCh (int nu, string na); cout << lst.chNameOf(7) << endl;private: lst.delete Num(2); ◀ Node * head; … };

Dept. of Multimedia Engineering, DongEui Univ.(28)

0

시네마 TV

7lst

CJ 홈쇼핑

2

동의 TV

14

node3

Page 29: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

[email protected]

Another implementation of channel list 포인터의 활용

► 포인터 클래스 작성 : node list 노드목록

class Node { … } … class channelList { // NodeList channelList lst;public: lst.addCh(7, “ 시네마 TV”); channelList ( ) { head = 0; }; lst.addCh(2, “CJ 홈쇼핑” ); string chNameOf (int nu); lst.addCh(14, “ 동의 TV”); void deleteNum (int nu); cout << “7: ”; void addCh (int nu, string na); cout << lst.chNameOf(7) << endl;private: lst.delete Num(2); ◀ Node * head; … };

Dept. of Multimedia Engineering, DongEui Univ.(29)

0

시네마 TV

7lst

CJ 홈쇼핑

2

동의 TV

14

node3

Page 30: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

[email protected]

Another implementation of channel list 포인터의 활용

► 포인터 클래스 작성 : node list 노드목록

class Node { … } … class channelList { // NodeList channelList lst;public: lst.addCh(7, “ 시네마 TV”); channelList ( ) { head = 0; }; lst.addCh(2, “CJ 홈쇼핑” ); string chNameOf (int nu); lst.addCh(14, “ 동의 TV”); void deleteNum (int nu); cout << “7: ”; void addCh (int nu, string na); cout << lst.chNameOf(7) << endl;private: lst.delete Num(2); ◀ Node * head; … };

Dept. of Multimedia Engineering, DongEui Univ.(30)

0

시네마 TV

7lst

동의 TV

14

node3

Page 31: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

[email protected]

Another implementation of channel list 포인터의 활용

► 포인터 클래스 작성 : 함수의 구현 string chNameOf (int nu);

class Node { … } string chNameOf(int nu) {class channelList { // NodeList Node * ptr = head;public: while (ptr!=0) { channelList ( ) { head = 0; }; if (ptr->chn==nu) string chNameOf (int nu); retrun ptr->name; void deleteNum (int nu); ptr = ptr->nptr; ★★★ void addCh (int nu, string na); }private: return “ 채널없음” ; Node * head; }};

Dept. of Multimedia Engineering, DongEui Univ.(31)

0

시네마 TV

7lst

CJ 홈쇼핑

2

동의 TV

14

node3

Page 32: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

[email protected]

Another implementation of channel list

Dept. of Multimedia Engineering, DongEui Univ.(32)

0

시네마 TV

7lst

CJ 홈쇼핑

2

동의 TV

14

node3

포인터의 활용► 포인터 클래스 작성 : 함수의 구현 void deleteNum (int nu, string na);

class Node { … } void deleteNum (int nu) {class channelList { // NodeList if (head==0) return;public: if (head->nu==nu) { channelList ( ) { head = 0; }; Node *tmp = head; string chNameOf (int nu); head = head->nptr; void deleteNum (int nu); delete tmp; return; void addCh (int nu, string na); }private: Node ptr = head; Node * head; while (ptr->nptr!=0 && ptr->nptr->chn!=nu) {}; ptr = ptr->nptr;

} if (ptr->next==0) return; Node *tmp = ptr->nptr; ★★★ ptr->nptr = ptr->nptr->nptr; delete tmp;}

Page 33: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

[email protected]

Another implementation of channel list 포인터의 활용

► 포인터 클래스 작성 : 함수의 구현 void addCh (int nu, string na);

class Node { … } string addCh (int nu, string na) {class channelList { // NodeList Node *ptr = new Node(nu, na);public: ptr->nptr = head; channelList ( ) { head = 0; }; head = ptr; string chNameOf (int nu); } void deleteNum (int nu); // string addCh (int nu, string na) { void addCh (int nu, string na); // head = new Node(nu, na, head);private: // } Node * head;};

Dept. of Multimedia Engineering, DongEui Univ.(33)

0

시네마 TV

7lst

CJ 홈쇼핑

2

node3

Page 34: DONGEUI UNIVERSITY Data structures 동의대학교 멀티미디어공학과 이광의교수 01.3: C++ pointers

[email protected]

summaries 포인터

► 포인터 기초• 매개변수에 사용되는 포인터• 동적 메모리 할당

► 포인터 활용 예 1• 포인터에 기반한 채널목록의 또 다른 구현• 연결 리스트에서 노드 간의 연결에 활용되는 포인터

포인터를 자유자재로 쓸 수 있도록 연습합시다 .

Dept. of Multimedia Engineering, DongEui Univ.(34)

practice makes perfect!!!