重温数据结构 ADT 之 List

305 阅读2分钟

这是我参与更文挑战的第7天,活动详情查看: 更文挑战

List(列表)很常见的真实世界的实体,不过是相同类型的对象的集合。我们可以有一个单词列表,我们可以有一个名字列表,或者我们可以有一个数字列表,我们首先将列表定义为抽象数据类型。但我们定义抽象数据类型时,我们只是定义要存储的数据,然后定义可用的操作类型,我们不讨论实现的细节。

让我们首先定义一个非常基本的列表。我想要一个列表,可以存储给定数量,给定数据类型的元素,这是一种静态列表,因为列表中的元素数量不会改变,我们在创建列表之前知道元素的数量。这个列表支持写入或者修改任何位置的元素,当然也支持读取元素中特定位置的元素。我们能想到“数组”可以为我们提供这些功能,这些操作数组里都有。

我们可以创建任何数据类型的数组,因此,假设我们要创建一个整数的列表,先声明整数的数组类型,然后再在声明中传入大小的参数。我们可以在特定位置写入或者修改元素。元素 A[0],A[1] ,可以像这样访问。我们可以读取特定位置的元素,第 i 个位置的按照 A[i] 这种方式访问。

int A[10];
A[0]=2;
print(A[i]); //伪代码

数组是一种数据结构,可以为我们提供列表的实现。现在我们来看具有更多功能的列表,能够处理更多的场景,所以我们这里将重新定义此列表。这里不需要静态列表,不需要固定大小,需要的是动态列表,能够根据需求自动增长。所以这种列表的特点是如果列表中没有元素就会是空列表,当这种列表为空时,列表的大小,也就是长度就是0。我们可以在列表的任何位置插入元素,可以从列表中删除元素,可以计算列表中的元素总数,可以读取、写入或者修改列表中特定位置的元素。我们需要为列表指定数据类型,所以我们应该在创建列表的同时就定义好这是一个整数列表还是一个字符串字串或者浮点型或者其它什么类型的数据。