45、数据结构:链表与栈的深入解析

数据结构:链表与栈的深入解析

1. 元组取值差异

在处理集合时,我们通常期望像操作数组和向量那样来获取单个值,如 avgs[0] avgs[1] 。但对于元组,这种方式并不适用。在元组中,我们需要通过元组标识符加点和数字值来引用元素,例如使用 avgs.1 获取元组的第一个值,用 avgs.2 获取第二个值。从语言角度看,这似乎不太一致,但这也凸显了 Rust 认为元组与其他集合不同。实际上,集合中的数据类型通常是一致的,即集合中的所有条目都是相同的数据类型。而元组的问题在于,它可以包含不同的数据类型,这意味着我们需要采用与传统集合不同的方式从元组中获取不同的元素。

2. 数组的局限性

数组在 Rust 中的局限性较大。定义数组时,我们必须知道其大小并进行初始化,这使得数组是固定的。它位于内存的一个位置,大小已知。如果要扩展数组,就需要创建一个新数组,并将现有数组中的值移动或复制到新数组中,这非常繁琐。特别是在编译时不确定要存储多少值的情况下,动态处理数据会更加容易。若在编译时不知道数组的大小,就会出现内存问题,这通常需要程序员对内存分配和释放有更多的控制权,但 Rust 并不允许这样做。不过,这其实是件好事,因为大多数程序员在内存管理方面做得并不好,让语言来处理内存管理会更轻松。

3. 链表的概念与实现

链表是一种将数据集合的控制权交给程序员的集合。作为程序员,我们可以控制数据的各个实例。链表就是将单个数据实例相互连接起来,这通常需要访问每个实例的内存位置,一般通过指针这种数据类型来实现。指针只是一个内存地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值