Class: DSA::LinkedList::Singly
- Inherits:
-
Object
- Object
- DSA::LinkedList::Singly
- Includes:
- Enumerable
- Defined in:
- lib/dsa-ruby/linked_list.rb
Instance Method Summary collapse
- #append(val) ⇒ Object
- #delete(val) ⇒ Object
- #each(&block) ⇒ Object
- #empty? ⇒ Boolean
- #find(val) ⇒ Object
-
#initialize ⇒ Singly
constructor
A new instance of Singly.
- #peek ⇒ Object
- #pop ⇒ Object
- #push(val) ⇒ Object
- #reverse! ⇒ Object
- #size ⇒ Object
- #to_a ⇒ Object
Constructor Details
#initialize ⇒ Singly
Returns a new instance of Singly.
23 24 25 26 |
# File 'lib/dsa-ruby/linked_list.rb', line 23 def initialize @head = nil @size = 0 end |
Instance Method Details
#append(val) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/dsa-ruby/linked_list.rb', line 34 def append(val) new_node = Node.new(val) if @head.nil? @head = new_node else node = @head node = node.next while node.next node.next = new_node end @size += 1 self end |
#delete(val) ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/dsa-ruby/linked_list.rb', line 61 def delete(val) return false unless @head if @head.val == val @head = @head.next @size -= 1 return true end node = @head while node.next if node.next.val == val node.next = node.next.next @size -= 1 return true end node = node.next end false end |
#each(&block) ⇒ Object
127 128 129 130 131 132 133 134 |
# File 'lib/dsa-ruby/linked_list.rb', line 127 def each(&block) return enum_for(:each) unless block_given? node = @head while node yield node.val node = node.next end end |
#empty? ⇒ Boolean
111 112 113 |
# File 'lib/dsa-ruby/linked_list.rb', line 111 def empty? @size == 0 end |
#find(val) ⇒ Object
83 84 85 86 87 88 89 90 |
# File 'lib/dsa-ruby/linked_list.rb', line 83 def find(val) node = @head while node return node if node.val == val node = node.next end nil end |
#peek ⇒ Object
56 57 58 59 |
# File 'lib/dsa-ruby/linked_list.rb', line 56 def peek raise IndexError, "list is empty" unless @head @head.val end |
#pop ⇒ Object
47 48 49 50 51 52 53 54 |
# File 'lib/dsa-ruby/linked_list.rb', line 47 def pop raise IndexError, "list is empty" unless @head val = @head.val @head = @head.next @size -= 1 val end |
#push(val) ⇒ Object
28 29 30 31 32 |
# File 'lib/dsa-ruby/linked_list.rb', line 28 def push(val) @head = Node.new(val, @head) @size += 1 self end |
#reverse! ⇒ Object
92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/dsa-ruby/linked_list.rb', line 92 def reverse! return self unless @head prev = nil curr = @head while curr nxt = curr.next curr.next = prev prev = curr curr = nxt end @head = prev self end |
#size ⇒ Object
107 108 109 |
# File 'lib/dsa-ruby/linked_list.rb', line 107 def size @size end |
#to_a ⇒ Object
115 116 117 118 119 120 121 122 123 |
# File 'lib/dsa-ruby/linked_list.rb', line 115 def to_a result = [] node = @head while node result << node.val node = node.next end result end |