003 通过链表学Rust之给链表添加函数

介绍

视频地址: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)    
            }
        }
    }
}

至此,我们把链表的几个基本函数都写完了!

本作品采用《CC 协议》,转载必须注明作者和本文链接
令狐一冲
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
文章
255
粉丝
120
喜欢
308
收藏
128
排名:335
访问:2.8 万
私信
所有博文
社区赞助商