數據結構筆記淺記(八)列表

「列表 list」是一個抽象的數據結構概念,它表示元素的有序集合,支持元素訪問、修改、添加、刪除和遍歷 等操作,無須使用者考慮容量限制的問題。列表可以基於鏈表或數組實現。

        ‧ 鏈表天然可以看作一個列表,其支持元素增刪查改操作,並且可以靈活動態擴容。

        ‧ 數組也支持元素增刪查改,但由於其長度不可變,因此只能看作一個具有長度限制的列表。

當使用數組實現列表時,長度不可變的性質會導致列表的實用性降低。爲解決此問題,我們可以使用「動態數組 dynamic array」來實現列表。它繼承了數組的各項優點,並且可 以在程序運行過程中進行動態擴容。 一般情況把“列表”和“動態數組”視 爲等同的概念。

初始化列表

通常使用“無初始值”和“有初始值”這兩種初始化方法:

訪問元素

列表本質上是數組,因此可以在 𝑂(1) 時間內訪問和更新元素,效率很高。

插入與刪除元素

相較於數組,列表可以自由地添加與刪除元素。在列表尾部添加元素的時間複雜度爲 𝑂(1) ,但插入和刪除元素的效率仍與數組相同,時間複雜度爲 𝑂(𝑛) 。

遍歷列表

與數組一樣,列表可以根據索引遍歷,也可以直接遍歷各元素。

拼接列表

給定一個新列表 list1 ,我們可以將其拼接到原列表的尾部。

排序列表

完成列表排序後,我們便可以使用在數組類算法題中經常考查的“二分查找”和“雙指針”算法。

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