Əlaqəli siyahı elementləri yaddaşda yan-yana yox, düyünlərdə saxlayır: hər düyün verilən və növbəti düyünə istinad daşıyır. Bu sadə ideya əlavə və silməni sürüşdürmə olmadan O(1)-də edir, amma indekslə girişi O(n)-ə çevirir. Massivin yaddaş modelinə massiv və dinamik massiv dərsində baxmışdıq.

Massiv və əlaqəli siyahı
Massiv və əlaqəli siyahı

Düyün və LinkedList sinfi

Node iki sahə saxlayır: value və next. Siyahı yalnız head-i bilir, ölçünü isə ayrıca sayır ki, len O(1) işləsin. __iter__ generator kimi yazılıb (iterasiya protokolu), ona görə list(...), sum(...) və in hazır işləyir; __len__ üçün dunder metodlarına baxın.

python
class Node:
    def __init__(self, value, next=None):
        self.value = value
        self.next = next

class LinkedList:
    def __init__(self):
        self.head = None
        self._size = 0

    def push_front(self, value):
        self.head = Node(value, self.head)
        self._size += 1