「列表 list」是一個抽象的數據結構概念,它表示元素的有序集合,支持元素訪問、修改、添加、刪除和遍歷 等操作,無須使用者考慮容量限制的問題。列表可以基於鏈表或數組實現。
‧ 鏈表天然可以看作一個列表,其支持元素增刪查改操作,並且可以靈活動態擴容。
‧ 數組也支持元素增刪查改,但由於其長度不可變,因此只能看作一個具有長度限制的列表。
當使用數組實現列表時,長度不可變的性質會導致列表的實用性降低。爲解決此問題,我們可以使用「動態數組 dynamic array」來實現列表。它繼承了數組的各項優點,並且可 以在程序運行過程中進行動態擴容。 一般情況把“列表”和“動態數組”視 爲等同的概念。
初始化列表
通常使用“無初始值”和“有初始值”這兩種初始化方法:
訪問元素
列表本質上是數組,因此可以在 𝑂(1) 時間內訪問和更新元素,效率很高。
插入與刪除元素
相較於數組,列表可以自由地添加與刪除元素。在列表尾部添加元素的時間複雜度爲 𝑂(1) ,但插入和刪除元素的效率仍與數組相同,時間複雜度爲 𝑂(𝑛) 。
遍歷列表
與數組一樣,列表可以根據索引遍歷,也可以直接遍歷各元素。
拼接列表
給定一個新列表 list1 ,我們可以將其拼接到原列表的尾部。
排序列表
完成列表排序後,我們便可以使用在數組類算法題中經常考查的“二分查找”和“雙指針”算法。