数据结构笔记浅记(八)列表

「列表 list」是一个抽象的数据结构概念,它表示元素的有序集合,支持元素访问、修改、添加、删除和遍历 等操作,无须使用者考虑容量限制的问题。列表可以基于链表或数组实现。

        ‧ 链表天然可以看作一个列表,其支持元素增删查改操作,并且可以灵活动态扩容。

        ‧ 数组也支持元素增删查改,但由于其长度不可变,因此只能看作一个具有长度限制的列表。

当使用数组实现列表时,长度不可变的性质会导致列表的实用性降低。为解决此问题,我们可以使用「动态数组 dynamic array」来实现列表。它继承了数组的各项优点,并且可 以在程序运行过程中进行动态扩容。 一般情况把“列表”和“动态数组”视 为等同的概念。

初始化列表

通常使用“无初始值”和“有初始值”这两种初始化方法:

访问元素

列表本质上是数组,因此可以在 𝑂(1) 时间内访问和更新元素,效率很高。

插入与删除元素

相较于数组,列表可以自由地添加与删除元素。在列表尾部添加元素的时间复杂度为 𝑂(1) ,但插入和删除元素的效率仍与数组相同,时间复杂度为 𝑂(𝑛) 。

遍历列表

与数组一样,列表可以根据索引遍历,也可以直接遍历各元素。

拼接列表

给定一个新列表 list1 ,我们可以将其拼接到原列表的尾部。

排序列表

完成列表排序后,我们便可以使用在数组类算法题中经常考查的“二分查找”和“双指针”算法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章