介紹
視訊位址:https://www.bilibili.com/video/av78062009/
相關源碼:https://github.com/anonymousGiga/Rust-link-list
詳細内容
在上一節,我們基本确定了連結清單的布局方式,下面我們就來實作連結清單的響應的函數。
對于連結清單來說,最基本的幾個函數就是:
New //new函數為建立連結清單的函數
Push//添加元素的函數
Pop //彈出元素的函數
New
實作如下:
impl List {
pub fn new() -> Self {
List { head: Link::Empty }
}
}
Push
實作如下:
impl List {
pub fn push(&mut self, elem: i32) {
let node = Box::new(Node {
elem: elem,
next: mem::replace(&mut self.head, Link::Empty),
});
self.head = Link::More(node);
}
}
Pop
impl List {
pub fn pop(&mut self) -> Option<i32> {
match mem::replace(&mut self.head, Link::Empty) {
Link::Empty => None,
Link::More(node) => {
self.head = node.next;
Some(node.elem)
}
}
}
}