Skip to main content

Module linked_list

Module linked_list 

Source
Expand description

§Linked List (bog’langan ro’yxat)

Darslik: 06-linked-list/

Bog’langan ro’yxat — elementlar (tugunlar) xotirada yonma-yon turmaydigan, har biri keyingisining manzilini saqlaydigan chiziqli struktura.

 HEAD → [10 | •] → [20 | •] → [30 | ✕]

§Vec bilan solishtirish

AmalVec<T>Linked List
Boshiga qo’shishO(n)O(1)
Oxiriga qo’shishO(1)*O(n) (yoki tail bilan O(1))
i -elementga murojaatO(1)O(n)
Ma’lum tugunni o’chirishO(n)O(1)
Kesh (cache) samaradorligiYuqoriPast

§Rustda linked list — nega qiyin?

Rustda har bir qiymatning bitta egasi bo’ladi. Linked listda esa tugunlar bir-birini “ushlab” turadi. Shuning uchun:

  • Bir tomonlama ro’yxat: Option<Box<Node<T>>> — egalik zanjiri, muammosiz.
  • Ikki tomonlama ro’yxat: Rc<RefCell<Node<T>>> (oldinga) + Weak (orqaga) — Weak bo’lmasa sikl hosil bo’lib, xotira hech qachon bo’shamaydi.

Amaliy maslahat: Rustda 95% hollarda Vec yoki VecDeque linked listdan tezroq. Linked listni faqat “o’rtadan tez o’chirish” haqiqatan kerak bo’lganda ishlating. Bu modul — tushunish uchun.

Structs§

DoublyLinkedList
Ikki tomonlama bog’langan ro’yxat: har bir tugun oldingi va keyingisini biladi.
SinglyLinkedList
Bir tomonlama bog’langan ro’yxat.