개발팁/Python

[Python] 최적화된 Linked List 알고리즘

후앤하 2022. 12. 16. 20:05
반응형

 

 

연결된 목록은 각 요소가 데이터와 목록의 다음 노드에 대한 참조를 저장하는 노드로 알려진 별도의 개체인 선형 데이터 구조입니다. 목록의 마지막 노드는 목록의 끝을 나타내는 null 참조를 가리킵니다. 연결된 목록은 동적 데이터 구조이므로 프로그램 실행 중에 크기가 커지거나 줄어들 수 있습니다.

다음은 Python에서 간단한 연결 목록 구현의 예입니다.


class Node:
    def __init__(self, data=None):
        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
            return
        current = self.head
        while current.next:
            current = current.next
        current.next = new_node

 

 

이 구현에는 Node와 LinkedList의 두 클래스가 포함됩니다. Node 클래스는 목록의 단일 노드를 나타내고 LinkedList 클래스는 연결된 목록 자체를 나타냅니다. LinkedList 클래스에는 목록의 첫 번째 노드를 가리키는 head 특성과 목록 끝에 새 노드를 추가하는 추가 메서드가 있습니다.

구현을 테스트하려면 Python의 내장 unittest 모듈을 사용할 수 있습니다. 다음은 이를 사용하여 LinkedList 클래스를 테스트하는 방법의 예입니다.

 

 

 

 

 

 

import unittest

class TestLinkedList(unittest.TestCase):
    def setUp(self):
        self.linked_list = LinkedList()

    def test_append(self):
        self.linked_list.append(1)
        self.linked_list.append(2)
        self.linked_list.append(3)

        self.assertEqual(self.linked_list.head.data, 1)
        self.assertEqual(self.linked_list.head.next.data, 2)
        self.assertEqual(self.linked_list.head.next.next.data, 3)

if __name__ == '__main__':
    unittest.main()

 

 

이 테스트 사례는 새 연결 목록을 만들고 추가 메서드를 사용하여 세 개의 노드를 추가합니다. 그런 다음 노드의 데이터가 올바른지 확인합니다.

반응형