介绍
视频地址:www.bilibili.com/video/av78062009/
相关源码:github.com/anonymousGiga/Rust-link...
详细内容
在上一节,我们基本确定了链表的布局方式,下面我们就来实现链表的响应的函数。
对于链表来说,最基本的几个函数就是:
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
和Push函数不一样,Pop函数需要考虑当链表为空时的情况,所以我们考虑Pop函数的返回值使用Option。实现代码如下:
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) | |
}}} | |
} |
至此,我们把链表的几个基本函数都写完了!