이터레이터 프로토콜을 구현한 데이터 연결 리스트
소개
데이터 연결 리스트는 데이터 요소를 노드로 연결하여 구성된 자료 구조입니다. 이러한 데이터 연결 리스트를 다루는 중에는 순환하여 각 요소를 순차적으로 접근하고 싶을 때가 있습니다. 이때 이터레이터 프로토콜을 구현하여 리스트의 각 요소에 순차적으로 접근할 수 있게 됩니다.
이터레이터 프로토콜이란?
이터레이터 프로토콜은 모든 객체가 순회 가능한 객체로 동작하기 위한 규약입니다. 이 프로토콜은 __iter__
와 __next__
메서드를 갖습니다. __iter__
는 이터레이터 객체 자체를 반환하며, __next__
는 다음 요소를 반환하고, 더 이상 요소가 없을 경우 StopIteration 예외를 발생시킵니다.
데이터 연결 리스트에 이터레이터 프로토콜 구현하기
아래는 파이썬으로 데이터 연결 리스트에 이터레이터 프로토콜을 구현하는 예시 코드입니다.
class Node:
def __init__(self, data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def append(self, data):
new_node = Node(data)
if self.head is None:
self.head = new_node
else:
current = self.head
while current.next:
current = current.next
current.next = new_node
def __iter__(self):
current = self.head
while current:
yield current.data
current = current.next
# 데이터 연결 리스트 생성
linked_list = LinkedList()
# 데이터 추가
linked_list.append(1)
linked_list.append(2)
linked_list.append(3)
# 이터레이터를 사용하여 데이터 출력
for data in linked_list:
print(data)
위의 코드에서 LinkedList 클래스는 이터레이터 프로토콜을 구현하기 위해 __iter__
메서드를 정의합니다. 이 메서드는 제너레이터 함수로 구현되어 순환하며 요소를 반환합니다. 이렇게 하면 데이터 연결 리스트에 for 문을 사용하여 각 요소에 접근할 수 있게 됩니다.
마무리
이터레이터 프로토콜을 구현한 데이터 연결 리스트는 데이터를 효율적으로 관리하고 순차적으로 접근하는 데 유용합니다. 이러한 자료 구조는 많은 프로그래밍 언어에서 사용되며, 이터레이터 프로토콜을 통해 더욱 효율적으로 활용할 수 있습니다.
#datastructures #linkedlist