数据结构:链表与栈的深入解析
1. 元组取值差异
在处理集合时,我们通常期望像操作数组和向量那样来获取单个值,如 avgs[0] 和 avgs[1] 。但对于元组,这种方式并不适用。在元组中,我们需要通过元组标识符加点和数字值来引用元素,例如使用 avgs.1 获取元组的第一个值,用 avgs.2 获取第二个值。从语言角度看,这似乎不太一致,但这也凸显了 Rust 认为元组与其他集合不同。实际上,集合中的数据类型通常是一致的,即集合中的所有条目都是相同的数据类型。而元组的问题在于,它可以包含不同的数据类型,这意味着我们需要采用与传统集合不同的方式从元组中获取不同的元素。
2. 数组的局限性
数组在 Rust 中的局限性较大。定义数组时,我们必须知道其大小并进行初始化,这使得数组是固定的。它位于内存的一个位置,大小已知。如果要扩展数组,就需要创建一个新数组,并将现有数组中的值移动或复制到新数组中,这非常繁琐。特别是在编译时不确定要存储多少值的情况下,动态处理数据会更加容易。若在编译时不知道数组的大小,就会出现内存问题,这通常需要程序员对内存分配和释放有更多的控制权,但 Rust 并不允许这样做。不过,这其实是件好事,因为大多数程序员在内存管理方面做得并不好,让语言来处理内存管理会更轻松。
3. 链表的概念与实现
链表是一种将数据集合的控制权交给程序员的集合。作为程序员,我们可以控制数据的各个实例。链表就是将单个数据实例相互连接起来,这通常需要访问每个实例的内存位置,一般通过指针这种数据类型来实现。指针只是一个内存地址
超级会员免费看
订阅专栏 解锁全文
2107

被折叠的 条评论
为什么被折叠?



