노드
연결리스트에서 노드는 데이터의 한 단위를 의미한다. 각 노드는 메모리에서 별도의 위치를 차지하기 때문에 노드마다 고유한 메모리 주소가 할당되어 있다. 노드의 구조를 살펴보면 해당 노드가 저장한 데이터와 다음 노드를 가리키는 포인터(next) 요소를 찾아볼 수 있다.
class Node:
def __init__(self, data):
self.data = data
self.next = None
노드 생성
왼쪽 노드의 메모리 주소가 "1202243114115"이고 오른쪽 노드의 메모리 주소가 "1202243112121"이라고 가정하자. "zun"이라는 데이터를 지닌 왼쪽 노드의 포인터가 오른쪽 노드의 메모리 주소인 "1202243112121"를 저장한다면 어떨까? 두 노드가 링크를 통해 하나의 연결리스트가 된다.
node1 = Node("zun")
node2 = Node([1, 2])
노드 연결: 연결리스트
이번 예시의 경우 왼쪽 노드가 헤드(head)가 되며, 오른쪽 노드는 테일(tail)이 된다. 마지막 노드인 테일의 포인터가 가리키는 다음 노드가 없으므로, 해당 노드의 next 속성은 메모리 주소가 아닌 None으로 설정되어 있다.
zun -> [1, 2] -> None
'Basics > For KR' 카테고리의 다른 글
시간복잡도 실전 이해: 문자열 결합 연산 쓰지 마! (0) | 2024.11.19 |
---|---|
파이썬의 배열: 인덱스의 시작은 0인가, 1인가? (8) | 2024.11.05 |
파이썬의 주요 자료형과 활용 예시 (3) | 2024.10.29 |
프로그래밍에서 자료구조란? (3) | 2024.10.22 |