rustlang
May 20, 2024
How to reverse a list in RUST
Here we'll talking about how does reverse a list into RUST.
Usually if you want to reverse you need to create dummy and current variables for munipulate data:
let mut dummy = None; let mut current = head;
Then you'll a cycle for iterate through the node's list:
while let Some(mut node) = current {}
Then you have to take a next node:
let next = node.next.take();
Then you need to set a next element as a dummy element:
node.next = dummy.take();
Now we need set dummy as a current node (which is already implementation of the first one and the dummy elements):
dummy = Some(node);
Finally we change current to the next (where next has already been taken as node.next
)
current = next;
Code:
pub fn reverse_list(head: Option<Box<ListNode>>) -> Option<Box<ListNode>> { let (mut dummy, mut current) = (None, head); while let Some(mut node) = current { let next = node.next.take(); node.next = dummy.take(); dummy = Some(node); current = next; } dummy }