자료구조의 종류는 많지만 실제 자료구조를 구현하는 기술은 리스트(List)와 연결리스트(Linked List) 두 가지가 있다.
연속적인 저장의 형태를 지닌다.
저장하는 각 데이터가 데이터 외에 다음과 이전의 데이터를 가리키는 정보를 가지고 있는 구조.
삽입과 삭제를 할 때는 전체 데이터의 변동이 없고 앞, 뒤의 연관된 데이터만 변동이 있다.
따라서 중간에 삽입, 삭제는 빠르게 수행할 수 있지만 특정 데이터를 찾는 것은 포인터를 따라 이동해야 하므로 성능이 떨어진다.
python 3.8
# Linked List
class Node(object):
def __init__(self, value, next_pointer=None):
self.value = value
self.next = next_pointer
class LinkedList(object):
def __init__(self):
self.head = None
self.tail = None
def append(self, data):
node = Node(data)
if self.head is None:
self.head = node
else:
self.tail.next = node
self.tail = node
def delete(self, data):
prev_node = self.head
if self.head.value == data:
self.head = self.head.next
del prev_node
else:
next_node = self.head.next
while next_node:
if next_node.value == data:
prev_node.next = next_node.next
del next_node
break
prev_node = next_node
next_node = next_node.next
github : https://github.com/honeybeeveloper/data-structure/blob/develop/linked-list.py
참고 : 책 <그림으로 정리한 알고리즘과 자료구조>