연결 리스트 (linked list)

14
연연 연연연 연연 연연연 (Linked List) (Linked List) What is Linked List? 연 연연연 연연연연 연 연연연연연 연연연연 연연 연연 연연연

Upload: axel-keller

Post on 30-Dec-2015

104 views

Category:

Documents


0 download

DESCRIPTION

연결 리스트 (Linked List). What is Linked List? 각 항목의 데이터 와 그 인접항목의 포인터 를 갖고 있는 리스트. 연결 리스트 (Linked List). 동적할당을 사용하기 때문에 메모리 사용에있어 효율이 높다 . 같은 양의 데이터를 저장 할 경우 배열보다 메모리를 많이 사용한다 . 포인터를 사용하기 때문에 엑세스 시간이 느리다 직렬인 배열과 달리 자료구조를 여러 형태로 구현 할수 있다. 연결 리스트 (Linked List). 배열 구조 : 삽입 / 삭제가 비효율적 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 연결 리스트 (Linked List)

연결 리스트연결 리스트 (Linked List)(Linked List)

What is Linked List?

각 항목의 데이터와 그 인접항목의 포인터를 갖고 있는 리스트

Page 2: 연결 리스트 (Linked List)

연결 리스트연결 리스트 (Linked List)(Linked List)

동적할당을 사용하기 때문에 메모리 사용에있어

효율이 높다 .

같 은 양 의 데 이 터 를 저 장 할 경 우 배 열 보 다

메모리를 많이 사용한다 .

포인터를 사용하기 때문에 엑세스 시간이 느리다

직렬인 배열과 달리 자료구조를 여러 형태로 구현

할수 있다 .

Page 3: 연결 리스트 (Linked List)

• 배열 구조 : 삽입 /삭제가 비효율적 • 리스트 구조 : 포인터 개념을 이용하여 삽입 /

삭제 연산을 효율적으로 수행 • 리스트의 구성 : data field & link • data field : 실제 자료가 저장 • link field : 다음 노드에 대한 포인터가 저장

data

link

data

link

data

link

data

link

연결 리스트연결 리스트 (Linked List)(Linked List)

Page 4: 연결 리스트 (Linked List)

배열 배열 & & 연결 리스트연결 리스트• 3,4 삽입

1

2

5

6

a[0]

a[1]

a[2]

a[3]

a[4]

a[5]

a[6]

1

2

5

6

a[0]

a[1]

a[2]

a[3]

a[4]

a[5]

a[6]

1

2

3

4

5

6

a[0]

a[1]

a[2]

a[3]

a[4]

a[5]

a[6]

• Int a[7]

Page 5: 연결 리스트 (Linked List)

1

4

2

3 추가1

4

2

3

1

4

2

3

배열 배열 & & 연결 리스트연결 리스트

Page 6: 연결 리스트 (Linked List)

포인터포인터 (Pointer)(Pointer)

주소를 저장하기위한 공간

• 선언 : 객체형 * 변수명 ;• 예제 : int * ptr; int a;• 선언시 “ * 변수명” 의 의미 => 주소저장공간

• 객체사용• & : 주소연산자• * : 역참조 ( 간접지시 ) 연산자• 예제

• ptr = &a;• ptr = a;• *ptr = a;

Page 7: 연결 리스트 (Linked List)

포인터포인터 (Pointer)(Pointer)

int *a1;

int a2 =

10;

a1 = &a2

*a1 = a2;

1000 a1

1002 a2

1002

10

1000 a1

1002 a2

Page 8: 연결 리스트 (Linked List)

포인터포인터 (Pointer)(Pointer)

포인터 사용시 주의할 점

• 포인터는 항상 어떤 대상을 가리키고 있어야 함

• 어떤 대상도 가리키고 있지 않는 포인터는 항상

NULL 로 초기화

Page 9: 연결 리스트 (Linked List)

단순연결 리스트단순연결 리스트 (Singly Linked List)(Singly Linked List)

• 노드들은 순차적 위치에

존재하지 않는다• 노드들의 위치는 실행시마다

바뀔수 있다

bat cat sat vat \nptr

bat

vat

cat

sat

Page 10: 연결 리스트 (Linked List)

bat cat sat vat \nptr

단순연결 리스트단순연결 리스트 (Singly Linked List)(Singly Linked List)

연결 리스트 구성을 위한 기능

• 노드의 구조 정의 : struct

• 노드 생성 방법 : new

• 노드 삭제 방법 : delete

Page 11: 연결 리스트 (Linked List)

bat cat

단순연결 리스트단순연결 리스트 (Singly Linked List)(Singly Linked List)

생성

new 연산자

bat cat

연결

Page 12: 연결 리스트 (Linked List)

검색

단순연결 리스트단순연결 리스트 (Singly Linked List)(Singly Linked List)

bat cat sat vat \n

ptr 이동

Page 13: 연결 리스트 (Linked List)

삽입

단순연결 리스트단순연결 리스트 (Singly Linked List)(Singly Linked List)

bat cat sat vat \nptr

vat

12

Page 14: 연결 리스트 (Linked List)

단순연결 리스트단순연결 리스트 (Singly Linked List)(Singly Linked List)

삭제

bat cat sat vat \nptr

1

delete2