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
网友评论