참고/그림 출처 : https://realpython.com/linked-lists-python/
Array의 단점
→ memory address에 크기를 미리 지정한 후 read, insert, delete, searching을 해야하는 번거로움 존재합니다.
Array의 단점을 개선하기 위해 나온 것이 “linked list” 입니다.
1) Node
2) Pointer
3) Head
4) Tail
5) Next = None / Null
다음에 오는 데이터를 연결하기 위해선 별도의 주소값을 가져야 합니다.
정보를 찾기 위해 주소를 확인하고, 다음 데이터를 탐색하는 시간이 있기 때문에 접근 속도가 느립니다.
→ 책에서 페이지를 넘기며 정보를 찾듯 저장 장치에서 순차적으로 데이터를 읽어야 하기 때문입니다.
중간에 위치한 데이터 삭제 시, 앞/뒤로 연결된 데이터의 연결을 재구성해야하는 번거로움이 있습니다.
파이썬의 리스트가 linked list의 기능 지원해주는데요, 예시를 보겠습니다.
class Node:
# data만 입력시, data의 초기값은 None, next 초기값은 None
def __init__(self, data, next=None):
self.data = data
self.next = next
# 3개의 node에 대해 linked list 만들기
node1 = Node(1)
node2 = Node(2)
node3 = Node(3)
node1.next = node2
node2.next = node3
# 네 번째 노드 만들어주기
new_node = Node(4)
# tail node 만드는 방법
current_node = node1
while current_node.next is not None:
current_node = current_node.next
current_node.next = new_node
# Now the linked list contains nodes with data 1, 2, 3, and 4, linked together.
print(new_node.data)
>> 4
이번 포스팅은 다소 어려운 개념이 맞습니다.
그러니 이 글만 보시고 CS 나만 어렵게 느끼는 건가?라는 생각으로 자책하지 않으셨으면 좋겠습니다.
그럼 안뇽