List
陣列如果要從中間插入一個元素,需要將其後面所有元素搬移一格,需耗費 ,連結串列( linklist
)能只花 完成插入。
1 2 3 4 5 |
|
可以利用陣列取代指標來實作 linklist
。
C++ 提供 list 函式庫實作雙向串列。
- 標頭檔:
<list>
- 建構式:
list <T> L
L.size()
:回傳元素個數,複雜度L.empty()
:回傳是否為空,複雜度L.push_front(T a),L.push_back(T a)
:插入頂端/尾端元素,複雜度L.pop_front(),L.pop_back()
:刪除頂端/尾端元素,複雜度L.insert(iterator it,size_type n,T a)
:在 it 指的那項的前面插入 n 個 a 並回傳指向 a 的迭代器。複雜度 。L.erase(iterator first,iterator last)
:把 指到的東西全部刪掉,回傳 last。複雜度與砍掉的數量呈線性關係,如果沒有指定 last, 那會自動視為只刪除 first 那項。L.splice(iterator it,list &x,iterator first,iterator last)
:first 和 last 是 x 的迭代器。此函式會把 指到的東西從 x 中剪下並加到 it 所指的那項的前面。x 會因為這項函式而改變。若未指定 last, 那只會將 first 所指的東西移到 it 前方。複雜度與轉移個數呈線性關係。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|