From 51bfae35cdfc901b46eae35987670c3a0a7f35cc Mon Sep 17 00:00:00 2001 From: SquidSpirit Date: Sun, 17 Aug 2025 23:33:49 +0800 Subject: [PATCH] feat: refactor reverse_list function and add reverse_list_2 implementation --- 206_reverse_linked_list/src/main.rs | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/206_reverse_linked_list/src/main.rs b/206_reverse_linked_list/src/main.rs index 8561534..081ffed 100644 --- a/206_reverse_linked_list/src/main.rs +++ b/206_reverse_linked_list/src/main.rs @@ -1,3 +1,5 @@ +use std::ops::Deref; + fn main() { println!("Hello, world!"); } @@ -22,9 +24,9 @@ impl Solution { let mut arr: Vec = vec![]; let mut current_node = head; - while current_node != None { - arr.push(current_node.as_ref().unwrap().val); - current_node = current_node.unwrap().next; + while let Some(node) = current_node.take() { + arr.push(node.val); + current_node = node.next; } if arr.is_empty() { @@ -41,4 +43,20 @@ impl Solution { head } + + pub fn reverse_list_2(mut head: Option>) -> Option> { + if head.is_none() { + return None; + } + let mut p: Option> = None; + + while let Some(mut node) = head.take() { + let next = node.next; + node.next = p; + p = Some(node); + head = next; + } + + p + } }