pub struct SinglyLinkedList<T> { /* private fields */ }Expand description
Bir tomonlama bog’langan ro’yxat.
Option<Box<Node<T>>> — Rustdagi eng tabiiy ko’rinish:
None— ro’yxat/quyruq tugadi (NULLning xavfsiz muqobili);Box— tugun heapda yashaydi, chunki uning o’lchami rekursiv.
§Misol
use rust_algorithms::linked_list::SinglyLinkedList;
let mut list = SinglyLinkedList::new();
list.push_front(2);
list.push_front(1);
list.push_back(3);
assert_eq!(list.to_vec(), vec![1, 2, 3]);
list.reverse();
assert_eq!(list.to_vec(), vec![3, 2, 1]);
assert_eq!(list.pop_front(), Some(3));
assert_eq!(list.len(), 2);Implementations§
Source§impl<T> SinglyLinkedList<T>
impl<T> SinglyLinkedList<T>
Sourcepub fn push_front(&mut self, value: T)
pub fn push_front(&mut self, value: T)
Boshiga qo’shadi — O(1), linked listning asosiy afzalligi.
Sourcepub fn reverse(&mut self)
pub fn reverse(&mut self)
Ro’yxatni joyida teskari o’giradi — O(n), qo’shimcha xotirasiz.
Klassik “uch ko’rsatkich” usuli: prev, curr, next.
Har qadamda joriy tugunning strelkasini orqaga qaratamiz.
boshida: 1 → 2 → 3 → ✕
1-qadam: ✕ ← 1 2 → 3 → ✕
oxirida: ✕ ← 1 ← 2 ← 3Sourcepub fn middle(&self) -> Option<&T>
pub fn middle(&self) -> Option<&T>
O’rtadagi element (ikkita “ko’rsatkich” usuli: tez va sekin).
G’oya: sekin ko’rsatkich 1 qadam, tez ko’rsatkich 2 qadam yuradi. Tez ko’rsatkich oxiriga yetganda sekini roppa-rosa o’rtada bo’ladi — ro’yxat uzunligini oldindan bilmasdan, bitta yurishda.
§Misol
use rust_algorithms::linked_list::SinglyLinkedList;
let list: SinglyLinkedList<i32> = (1..=5).collect();
assert_eq!(list.middle(), Some(&3));Trait Implementations§
Source§impl<T: Debug> Debug for SinglyLinkedList<T>
impl<T: Debug> Debug for SinglyLinkedList<T>
Source§impl<T> Default for SinglyLinkedList<T>
impl<T> Default for SinglyLinkedList<T>
Source§impl<T> Drop for SinglyLinkedList<T>
Rekursiv Drop stack overflow bermasligi uchun qo’lda bo’shatamiz.
impl<T> Drop for SinglyLinkedList<T>
Rekursiv Drop stack overflow bermasligi uchun qo’lda bo’shatamiz.
Standart drop millionta tugunli ro’yxatda rekursiv chaqiriladi va stack
tugab qoladi. Bu yerda tugunlarni tsikl bilan birma-bir ozod qilamiz.