w3resource

Rust Program: Deleting Node from singly linked list

Rust Linked Lists: Exercise-4 with Solution

Write a Rust program to delete a node from a singly linked list by value.

Sample Solution:

Rust Code:

#[derive(Debug)] // Add this line to implement Debug for LinkedList
struct Node {
    v: usize,
    next: Option<Box<Node>>,
}

struct LinkedList {
    head: Option<Box<Node>>,
}

impl LinkedList {
    fn remove(&mut self, v: usize) -> Option<usize> {
        let mut current = &mut self.head;
        loop {
            match current {
                None => return None,
                Some(node) if node.v == v => {
                    *current = node.next.take();
                    return Some(v);
                },
                Some(node) => {
                    current = &mut node.next;
                }
            }
        }
    }
}

fn main() {
    let mut list = LinkedList {
        head: Some(Box::new(Node {
            v: 10,
            next: Some(Box::new(Node {
                v: 20,
                next: Some(Box::new(Node {
                    v: 30,
                    next: None,
                })),
            })),
        })),
    };
     println!("Original Linked List: {:?}", list.head);
    // Remove node with value 20
    if let Some(deleted_value) = list.remove(20) {
        println!("Deleted node with value: {}", deleted_value);
    } else {
        println!("Node not found.");
    }

    // Print updated linked list
   println!("Updated Linked List: {:?}", list.head);
}

Output:

Original Linked List: Some(Node { v: 10, next: Some(Node { v: 20, next: Some(Node { v: 30, next: None }) }) })
Deleted node with value: 20
Updated Linked List: Some(Node { v: 10, next: Some(Node { v: 30, next: None }) })

Explanation:

The above Rust code defines a singly linked list data structure (LinkedList) and its associated methods. Each node in the linked list (Node) holds a value of type "usize" and a pointer to the next node.

  • The "remove()" method in the "LinkedList" implementation removes the first occurrence of a node with a given value (v) from the linked list.
  • The "main()" function demonstrates the usage of the "LinkedList" by creating a linked list with some nodes and then removing a node with a specific value (20 in this case).
  • It prints the original linked list, the value of the deleted node (if found), and the updated linked list after the removal operation.

Rust Code Editor:

Previous: Rust Program: Inserting elements at the end of a singly linked list.
Next: Rust Set Union Function.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://w3resource.com/rust/collections_and_data_structures/rust-linked-lists-exercise-4.php