>>441
>>430がVec使用だから同等でないという話ならばRustにもリンクリストがあるよ
リンクリストに特化したパターンマッチング構文や結合構文はないけれど
例えばTをCopyせずそのまま使うならば
use std::collections::LinkedList;
fn qsort<T: PartialOrd>(mut list: LinkedList<T>) -> LinkedList<T> {
if let Some(pivot) = list.pop_front() {
let (smaller, rest): (LinkedList<T>, LinkedList<T>) =
list.into_iter().partition(|x| x < &pivot);
// concat
list = qsort(smaller);
list.extend([pivot]);
list.extend(qsort(rest));
}
list
}
fn main() {
let list = LinkedList::from([9, 0, 7, 3, 6, 1, 2, 4, 8, 5]);
println!("{:?}", list);
println!("{:?}", qsort(list));
}
Rust part21
■ このスレッドは過去ログ倉庫に格納されています
474デフォルトの名無しさん
2023/10/11(水) 23:18:11.74ID:vJm7EO/F■ このスレッドは過去ログ倉庫に格納されています
