Düğümlerin veri ve sonraki düğüm referansı tuttuğu, dinamik boyutlu doğrusal veri yapısıdır.
DSA kaynağı linked list yapısını bir düğüm serisi olarak tanımlar: her düğüm en azından sonraki düğüme işaret eden bir referans taşır; son düğümde bu referans boştur. Head ve tail referansları tutulduğunda başa veya sona ekleme sabit zamanda yapılabilir.
Arama ve rastgele konuma erişim için liste baştan sona dolaşılır. Bu yüzden linked list, sık uç ekleme/silme yapılan ve boyutu önceden bilinmeyen koleksiyonlarda güçlüdür; rastgele erişim gerektiren durumlarda dizi kadar uygun değildir.
Aşağıdaki uygulamalar PDF kaynaklarındaki pseudo kod akışını modern veri yapılarıyla ifade eder. Kenar durumları görünür bırakıldığı için örnekler doğrudan test edilebilir.
1class ListNode { 2 constructor(3 public value: T,4 public next: ListNode | null = null 5 ) {}6}78class LinkedList { 9 private head: ListNode | null = null; 10 private tail: ListNode | null = null; 1112 add(value: T) {13 const node = new ListNode(value);14 if (!this.head) {15 this.head = node;16 this.tail = node;17 return;18 }19 this.tail!.next = node;20 this.tail = node;21 }2223 contains(value: T) {24 let current = this.head;25 while (current) {26 if (current.value === value) return true;27 current = current.next;28 }29 return false;30 }31}Komutları virgülle ayırın. Örnek: add:1, add:45, add:60, contains:45, remove:1
Komutları virgülle ayırın. Örnek: add:1, add:45, add:60, contains:45, remove:1
En İyi Durum: O(1)
Ortalama Durum: O(n)
En Kötü Durum: O(n)
O(n) - Çalışma süresi, giriş boyutu ile doğrusal olarak artar.
Linked List Algoritması ile benzer veya alternatif olarak değerlendirilebilecek diğer başlıklar: