TIL_Linked list

김진경·2020년 3월 21일
0

IM19

목록 보기
7/21

Linked List에 대해 얘기하기 전에 먼저 List에 대해 이야기해보자.

List는 Array(배열)를 보완한 Data Structure라고 할 수 있다.

Array(배열)는 많은 양의 데이터를 한번에 모아 효율적으로 관리할 수 있는 Data Structure이다. 이런 배열의 가장 큰 특징 중 하나는 바로 Index의 존재이다. Index는 데이터의 순서를 나타내고 이를 이용해 효율적으로 데이터를 배열에서 호출할 수 있다. 하지만 반대로 말하면 데이터를 관리하기 위해 데이터마다 Index 값이 고정되어야 한다는 뜻이고 만약 어떤 데이터가 배열에서 삭제되면 그 Index는 빈공간으로 놓아두어야 한다.

이런 단점들을 보완하기 위해 List는 Index라는 개념을 과감히 배제한다. 대신 데이터를 넣을 때 빈틈없이 넣는다.

List에서는 Index가 없는 대신 Sequence라는 개념이 있다. 엘리먼트들 간의 순서인 것이다. 순서가 있지만 고정된 자리는 없는 Data Structure가 바로 List이다.

이런 List에는 두가지 유형이 있는데 Linear list(선형 리스트)와 Linked list(연결 리스트)가 그것이다. 오늘은 Linked list에 대해 알아보자.

Linked list (연결 리스트)

먼저 Linked list의 구조를 살펴보자

Linked list에서 각 요소는 위의 그림과 같이 데이터를 저장할 장소(DATA)와 다음 요소를 가리키기 위한 장소(NODE)로 구분되어있다. 그렇기 때문에 Linked list에서는 3번째 데이터로 가기 위해선 1번째, 2번째 요소를 거쳐야 갈 수 있다.

Method

append() : 리스트의 맨 끝에 요소를 추가한다.
getElement() : 현재 위치의 요소를 나타낸다.
insert() : 기존 요소 위에 새로운 요소를 추가한다.
remove() : 기존 요소를 삭제한다.
front() : 현재 위치를 리스트의 첫번째 요소로 설정한다.
end() : 현재 위치를 리스트의 마지막 요소로 설정한다.
prev() : 현재 위치를 한 요소 뒤로 이동한다. ex (3번째 요소 -> 2번째 요소)
next() : 현재 위치를 한 요소 앞으로 이동한다. ex (3번째 요소 -> 4번째 요소)
clear() : 모든 요소를 삭제한다.

Property

pos : 현재 위치를 보여준다.
length : 리스트 요소 수를 보여준다.

profile
Maktub.

0개의 댓글