美文网首页
Rust语言编程实例100题-072

Rust语言编程实例100题-072

作者: L我是小学生 | 来源:发表于2021-09-09 12:48 被阅读0次

    Rust语言编程实例100题-072

    题目:链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。

    创建一个简单的可以存储i32元素的链表,只实现push功能即可。

    程序分析:可以使用结构体来实现链表。

    知识点:struct

    参考程序代码:

    #[derive(Debug)]
    struct LinkedList {
        value: i32,
        next: Option<Box<LinkedList>>,
    }
    
    impl LinkedList {
        // 创建一个链表
        fn new() -> Self {
            LinkedList { value: -1, next: None }
        }
    
        // 获取链表的最后一个元素
        fn get_last_ele(&mut self) -> &mut Self {
            if let Some(ref mut x) = self.next {
                return x.get_last_ele();
            }
            self
        }
    
        // push元素
        fn push(&mut self, ele: i32) {
            self.get_last_ele().next = Some(Box::new(LinkedList { value: ele, next: None }));
        }
    }
    
    fn main() {
        let mut list = LinkedList::new();
        list.push(1);
        list.push(2);
        list.push(3);
    
        dbg!(list);
    }
    

    程序执行结果:

    list = LinkedList {
        value: -1,
        next: Some(
            LinkedList {
                value: 1,
                next: Some(
                    LinkedList {
                        value: 2,
                        next: Some(
                            LinkedList {
                                value: 3,
                                next: None,
                            },
                        ),
                    },
                ),
            },
        ),
    }
    
    Process finished with exit code 0
    

    相关文章

      网友评论

          本文标题:Rust语言编程实例100题-072

          本文链接:https://www.haomeiwen.com/subject/axmiwltx.html