ݺߣ
Submit Search
단순 Linked list
•
Download as PPTX, PDF
•
0 likes
•
453 views
K
KimDaeho
Follow
c언어를 이용한 Linked List 삽입에 대하여 설명하였습니다 그림을 통해 설명해서 이해가 쉬울겁니다!
Read less
Read more
1 of 54
Download now
Download to read offline
More Related Content
단순 Linked list
1.
Simple LinkedList from C 창원대
정보통신공학과 김대호
2.
목차 • 정의 • 기본
타입 (HEAD, TAIL, NODE) • 노드 생성 newNode() • 노드 삽입 (맨 앞, 맨 뒤
3.
단순 연결 리스트 •
기본적인 Linked List 기초 중 기초 • 노드 끼리 연결된 형태 이중 Pointer를 사용함
4.
기본 타입
5.
기본 타입 Node data next
6.
기본 타입 Node data next data
: 노드 내부 저장소(정수 형) next : 다음 노드를 가르 킬 포인터 노드(Node형)
7.
기본 타입 node (NULL) data (0) next (NULL)
8.
HEAD, TAIL head (NULL) data (0) next (NULL) tail (NULL) data (0) next (NULL)
9.
메모리 할당 malloc •
데이터의 힙(heap) 영역에서 다루기위한 함수 • 할당 후, 데이터를 없애기 위해서는 free()를 선언 해주어야함
10.
메모리 할당 malloc
11.
newNode() • newNode()는 구조체에서
구성 된 것들을 malloc 을 통하여 생성해주는 함수 • malloc과 data를 삽입시켜줌
12.
newNode() node1 (NULL) data (0) next (NULL)
13.
newNode() node1 (NULL) data (10) next (NULL)
14.
newNode() node1 (NULL) data (10) next (NULL)
15.
노드삽입 • 노드를 연결
시키기 위해 head와 tail을 이용 • 맨 앞에 노드추가, 맨 뒤에 노드추가, 원하는 위치 에 노드 추가가 있음
16.
맨 앞에 노드추가
17.
addNodeFirst() • addNodeFirst()는 새롭게
생성된 노드를 head(맨 앞)으로 붙여주는 함수 • 이중 포인터 구문을 사용하여 쉽게 표현가능
18.
addNodeFirst()
19.
addNodeFirst() head (NULL) data (0) next (NULL)
20.
addNodeFirst() head (NULL) data (0) next (NULL) tail (NULL) data (0) next (NULL)
21.
addNodeFirst() head (NULL) data (0) next (NULL) tail (NULL) data (0) next (NULL) node1 (NULL) data (10) next (NULL)
22.
addNodeFirst() addNodeFirst 호출
23.
addNodeFirst() head (NULL) data (0) next (NULL) tail (NULL) data (0) next (NULL) node1 (NULL) data (10) next (NULL)
24.
addNodeFirst() *head (NULL) data (0) next (NULL) *tail (NULL) data (0) next (NULL) node1 (NULL) data (10) next (NULL) Node 포인터 변수의 주소를
저장 하는 이중 포인터 head, tail
25.
addNodeFirst() *head (NULL) data (0) next (NULL) *tail (NULL) data (0) next (NULL) node1 (NULL) data (10) next (NULL)
26.
addNodeFirst() *head (node1) data (0) next (NULL) *tail (node1) data (0) next (NULL) node1 (NULL) data (10) next (NULL) (*head) 가 NULL일
경우, (*head)의 값은 node1의 주 소 값 (*tail)의 값은 node1의 주소 값 을 가르킨다
27.
addNodeFirst() *head (node1) data (0) next (NULL) node (NULL) data (0) next (NULL) *tail (node1) data (0) next (NULL)
28.
addNodeFirst() *head (node1) data (0) next (NULL) *tail (node1) data (0) next (NULL) node1 (NULL) data (10) next (NULL) tail과 node1의 위치를
바꾸 고..
29.
addNodeFirst() *head (node1) data (0) next (NULL) *tail (node1) data (0) next (NULL) node1 (NULL) data (10) next (NULL) 가르킨다를 방향으로 표시함
30.
addNodeFirst() addNodeFirst 호출
31.
addNodeFirst() head (node1) data (0) next (NULL) tail (node1) data (0) next (NULL) node2 (NULL) data (20) next (NULL)
32.
addNodeFirst() head (node1) data (0) next (NULL) tail (node1) data (0) next (NULL) node2 (NULL) data (20) next (NULL)
33.
addNodeFirst() head (node1) data (0) next (NULL) tail (node1) data (0) next (NULL) node2 (NULL) data (20) next (NULL) head와 tail은 node1을 가르키고
있다
34.
addNodeFirst() head (node1) data (0) next (NULL) tail (node1) data (0) next (NULL) node1 (NULL) data (10) next (NULL)
35.
addNodeFirst() head (node1) data (0) next (NULL) tail (node1) data (0) next (NULL) node1 (NULL) data (10) next (NULL) node2 (NULL) data (20) next (NULL) +
36.
addNodeFirst() head (node1) data (0) next (NULL) tail (node1) data (0) next (NULL) node1 (NULL) data (10) next (NULL) node2 (NULL) data (20) next (NULL) +
37.
addNodeFirst() head (node1) data (0) next (NULL) tail (node1) data (0) next (NULL) node1 (NULL) data (10) next (NULL) node2 (NULL) data (20) next (*head =node1) + (*head)는 node1의 주소
값 이다! (중요) 왜 head를 안가르키냐 헷갈려 할 수 있지만 head 가 아니다! (*head)다!!
38.
addNodeFirst() head (node2) data (0) next (NULL) tail (node1) data (0) next (NULL) node1 (NULL) data (10) next (NULL) node2 (NULL) data (20) next (*head =node1) + 이 구문을 통해
, (*head)는 node2의 주소 값 을 가르킨다
39.
addNodeFirst() *head (node2) data (0) next (NULL) 약간 위치를 정리하면… node2 (NULL) data (20) next (node1) node1 (NULL) data (10) next (NULL) *tail (node1) data (0) next (NULL)
40.
addNodeFirst() *head (node2) data (0) next (NULL) 더 정리하면… 맨
마지막에 생성 된 것이 맨 앞에 연결 된 다! node2 (NULL) data (20) next (node1) node1 (NULL) data (10) next (NULL) *tail (node1) data (0) next (NULL)
41.
addNodeLast() • addNodeLast()는 새롭게
생성된 노드를 tail(맨 끝 )으로 붙여주는 함수 • addNodeFirst()의 개념을 이해 했다면 충분히 이 해 가능
42.
addNodeLast() 우리가 addNodeFirst를 통해 node1은
연결 됬다고 놨다고 생각하자!
43.
addNodeLast() 현재 구조 head (node1) data (0) next (NULL) tail (node1) data (0) next (NULL) node1 (NULL) data (10) next (NULL)
44.
addNodeLast() addNodeLast 호출
45.
addNodeLast() head (node1) data (0) next (NULL) tail (node1) data (0) next (NULL) node2 (NULL) data (20) next (NULL)
46.
addNodeLast() head (node1) data (0) next (NULL) tail (node1) data (0) next (NULL) node2 (NULL) data (20) next (NULL) head와 tail은 node1을 가르키고
있다
47.
addNodeFirst() head (node1) data (0) next (NULL) tail (node1) data (0) next (NULL) node1 (NULL) data (10) next (NULL)
48.
addNodeLast() head (node1) data (0) next (NULL) tail (node1) data (0) next (NULL) node1 (NULL) data (10) next (NULL) node2 (NULL) data (20) next (NULL) +
49.
addNodeFirst() head (node1) data (0) next (NULL) tail (node1) data (0) next (NULL) node1 (NULL) data (10) next (NULL) node2 (NULL) data (20) next (NULL) +
50.
addNodeLast() head (node1) data (0) next (NULL) tail (node1) data (0) next (NULL) node1 (NULL) data (10) next (node2) node2 (NULL) data (20) next (NULL) + (*tail)->next는 그림 속의
node1- >next 나 같은 의미다 즉 node2를 가르킨다
51.
addNodeLast() head (node1) data (0) next (NULL) tail (node2) data (0) next (NULL) node1 (NULL) data (10) next (NULL) node2 (NULL) data (20) next (NULL) + 이 구문을 통해
, (*tail)는 node2의 주소 값을 가르킨다
52.
addNodeLast() *head (node2) data (0) next (NULL) 약간 위치를 정리하면… node1 (NULL) data (10) next (node2) node2 (NULL) data (20) next (NULL) *tail (node2) data (0) next (NULL)
53.
addNodeLast() *head (node1) data (0) next (NULL) 더 정리하면… 맨
마지막 생 성 된 것이 맨 뒤에 연결 된다 ! node1 (NULL) data (10) next (node2) node2 (NULL) data (20) next (NULL) *tail (node2) data (0) next (NULL)
54.
마무리 • 기본적인 Linked
List 삽입 구조만 정확히 이해 했 다면 index삽입, 삭제, 이중 링크드리스트, 순환 링크드리스트도 충분히 이해 할 수 있습니다. • 다음시간에는 index 삽입, 삭제 관련된 자료를 준 비하겠습니다.
Download