2
標準ライブラリのLinkedList
から特定の要素をポップすることはできますか?選択された要素が最後に表示されるようにリンクされたリストを並べ替えることができますか?標準ライブラリのLinkedListから特定の要素をポップすることは可能ですか?
標準ライブラリのLinkedList
から特定の要素をポップすることはできますか?選択された要素が最後に表示されるようにリンクされたリストを並べ替えることができますか?標準ライブラリのLinkedListから特定の要素をポップすることは可能ですか?
これは、しかしO(n)の時間を要するので、良い考えではありません:二つのリストを作成する
use std::collections::LinkedList;
fn main() {
let mut list: LinkedList<i32> = (1..10).collect();
let mut tail = list.split_off(5);
let x = list.pop_back();
let y = tail.pop_front();
list.append(&mut tail);
println!("({:?}, {:?})", x, y); // (Some(5), Some(6))
println!("{:?}", list); // [1, 2, 3, 4, 7, 8, 9]
}
使用split_off
。これは、要求されたノードにリストを通るためにO(n)時間かかる。インデックスが無効な場合は、これもパニックになります。
これで、最初のリストの末尾(pop_back
)または2番目のリストの先頭(pop_front
)のいずれかを取ることができます。 append
と一緒にリストをつなげることができます。これらはすべてO(1)時間に作用します。