이터레이터 프로토콜을 구현한 데이터 연결 리스트

소개

데이터 연결 리스트는 데이터 요소를 노드로 연결하여 구성된 자료 구조입니다. 이러한 데이터 연결 리스트를 다루는 중에는 순환하여 각 요소를 순차적으로 접근하고 싶을 때가 있습니다. 이때 이터레이터 프로토콜을 구현하여 리스트의 각 요소에 순차적으로 접근할 수 있게 됩니다.

이터레이터 프로토콜이란?

이터레이터 프로토콜은 모든 객체가 순회 가능한 객체로 동작하기 위한 규약입니다. 이 프로토콜은 __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