且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何反转单链列表并将其转换为向量?

更新时间:2022-12-12 09:48:34

填充矢量,然后使用 .as_mut_slice()。reverse()反转。 / p>

Fill the vector, then reverse it using .as_mut_slice().reverse().

fn rev1<A>(fel: &Rc<FrontierElem<A>>) -> Vec<A>
where
    A: Clone,
{
    let mut cur = fel;
    let mut ret = Vec::new();
    while let Some(ref prev) = cur.prev {
        ret.push(cur.action.clone());
        cur = prev;
    } // First action (where cur.prev==None) is ignored by design
    ret.as_mut_slice().reverse();
    ret
}