Advertisement
Guest User

Untitled

a guest
Nov 4th, 2018
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rust 0.98 KB | None | 0 0
  1. pub struct SimpleLinkedList<T> {
  2.     head: Node<T>
  3. }
  4.  
  5. pub enum Node<T> {
  6.     Data{data: T, next: Box<Node<T>>},
  7.     Nil,
  8. }
  9.  
  10. impl<T> SimpleLinkedList<T> {
  11.     pub fn new() -> Self {
  12.         SimpleLinkedList{head: Node::Nil}
  13.     }
  14.  
  15.     pub fn len(&self) -> usize {
  16.         let mut len = 0;
  17.         let mut cur = &self.head;
  18.         while let Node::Data {data: _, next: n} = *cur {
  19.             len += 1;
  20.             cur = &n;
  21.         }
  22.         len
  23.     }
  24.  
  25.     pub fn push(&mut self, element: T) {
  26.         self.head =
  27.             Node::Data{
  28.                 data: element,
  29.                 next: Box::new(self.head),
  30.             }
  31.  
  32.     }
  33.  
  34.     pub fn pop(&mut self) -> Option<T> {
  35.         let top = self.head;
  36.         match top {
  37.             Node::Data{data, next} => {
  38.                 self.head = *next;
  39.                 Some(data)
  40.             }
  41.             Node::Nil => None
  42.         }
  43.     }
  44.  
  45.     pub fn peek(&self) -> Option<&T> {
  46.         unimplemented!()
  47.     }
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement