递归,先找到tail,然后从后向前修正指针
(node: Option<NonNull<Node<T>>>)
| 7 | |
| 8 | // 递归,先找到tail,然后从后向前修正指针 |
| 9 | pub(crate) unsafe fn do_reverse<T>(node: Option<NonNull<Node<T>>>) -> Option<NonNull<Node<T>>> { |
| 10 | node.and_then(|mut node| match node.as_mut().next.take() { |
| 11 | None => Some(node), // new_head, origin tail |
| 12 | Some(mut next) => { |
| 13 | let new_head = do_reverse(Some(next)); |
| 14 | next.as_mut().next = Some(node); |
| 15 | new_head |
| 16 | } |
| 17 | }) |
| 18 | } |