ruby_structures 0.0.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3010a5b7d4654d61386dc05018e491f62c5bd0aa
4
- data.tar.gz: 7e9bab4d78a0ba383eec40ba4600d5429eaab75f
3
+ metadata.gz: 35b0dcb999c08a0859b304a79c02e1ce5934d217
4
+ data.tar.gz: b49e0522296bac17123c7210088eb994b4b28370
5
5
  SHA512:
6
- metadata.gz: 1faeaa2b732a4d0f05939c7e92bff5bb81d90e7941ebf6c00fc29e26157efcb848fc3bea643a92c785f4e6f5e7ef374bb915802de0e53bbae8d84d4144948ea0
7
- data.tar.gz: f4a2e6d6885b2c5bc165cd7817913f94e677eddb69eec6bccee072403d0250d0728703ae2df24c415104fbea3b0bd18f889df2bef608d529983deb1f6c358b9d
6
+ metadata.gz: 35a961e74e9a699f1ae412c4b8134b6ca258a6ca701200011766268a4846a09090c2b2fdca54dfa5f87d773aff6cdf5480d41b32c348979687a9e2f79556e0b4
7
+ data.tar.gz: dc354ac04338961aba568926ae9df562be7c39ada587fc7dce8c91e456c6dfc90a1234d1c37c1cc8748467cc673fdad6c680ac00b89f9311a93fb873393cfa62
@@ -1,9 +1,9 @@
1
1
  class LinkedList
2
2
  include Enumerable
3
3
 
4
- def initialize(head=nil, tail=nil)
5
- @head = Node.new
6
- @tail = Node.new
4
+ def initialize
5
+ @head = LinkedListNode.new
6
+ @tail = LinkedListNode.new
7
7
  @head.send(:next=, @tail)
8
8
  @tail.send(:prev=, @head)
9
9
  end
@@ -13,16 +13,16 @@ class LinkedList
13
13
  end
14
14
 
15
15
  def to_s
16
- return "LinkedList is empty" if self.empty?
16
+ return "-" if self.empty?
17
17
 
18
- vals = self.map { |n| n.send(:val) }
18
+ vals = self.to_a { |n| n.send(:val) }
19
19
  vals.join(' -> ')
20
20
  end
21
21
 
22
22
  def inspect
23
- return "LinkedList is empty" if self.empty?
23
+ return "-" if self.empty?
24
24
 
25
- vals = self.map { |n| n.send(:val) }
25
+ vals = self.to_a { |n| n.send(:val) }
26
26
  vals.join(' -> ')
27
27
  end
28
28
 
@@ -41,7 +41,7 @@ class LinkedList
41
41
  end
42
42
 
43
43
  def append(val=nil)
44
- node = Node.new(val)
44
+ node = LinkedListNode.new(val)
45
45
  last = @tail.send(:prev)
46
46
 
47
47
  last.send(:next=, node)
@@ -54,7 +54,7 @@ class LinkedList
54
54
  end
55
55
 
56
56
  def prepend(val=nil)
57
- node = Node.new(val)
57
+ node = LinkedListNode.new(val)
58
58
  first = @head.send(:next)
59
59
 
60
60
  first.send(:prev=, node)
@@ -67,12 +67,12 @@ class LinkedList
67
67
  end
68
68
 
69
69
  def find(val)
70
- self.each { |n| return node if n.send(:val) == val }
70
+ self.each { |node| return node if node.send(:val) == val }
71
71
  nil
72
72
  end
73
73
 
74
- def include(val)
75
- self.each { |n| return true if n.send(:val) == val }
74
+ def include?(val)
75
+ self.each { |node| return true if node.send(:val) == val }
76
76
  false
77
77
  end
78
78
 
@@ -108,9 +108,23 @@ class LinkedList
108
108
 
109
109
  self
110
110
  end
111
+
112
+ def map(&prc)
113
+ new_linked_list = LinkedList.new
114
+ current_node = @head.send(:next)
115
+ return new_linked_list if current_node.nil?
116
+
117
+ while current_node != @tail
118
+ val = prc.call(current_node)
119
+ new_linked_list.append(val)
120
+ current_node = current_node.send(:next)
121
+ end
122
+
123
+ new_linked_list
124
+ end
111
125
  end
112
126
 
113
- class Node
127
+ class LinkedListNode
114
128
  def initialize(val=nil, next_node=nil, prev_node=nil)
115
129
  @val = val
116
130
  @next = next_node
@@ -16,6 +16,7 @@ class Queue
16
16
  end
17
17
 
18
18
  def ==(other_queue)
19
+ return false unless other_queue.is_a?(Queue)
19
20
  @store == other_queue.send(:store)
20
21
  end
21
22
 
@@ -25,6 +26,7 @@ class Queue
25
26
 
26
27
  def enqueue(el)
27
28
  @store.push(el)
29
+ self
28
30
  end
29
31
 
30
32
  def <<(el)
@@ -16,6 +16,7 @@ class Stack
16
16
  end
17
17
 
18
18
  def ==(other_stack)
19
+ return false unless other_stack.is_a?(Stack)
19
20
  @store == other_stack.send(:store)
20
21
  end
21
22
 
@@ -25,6 +26,7 @@ class Stack
25
26
 
26
27
  def push(el)
27
28
  @store.push(el)
29
+ self
28
30
  end
29
31
 
30
32
  def <<(el)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_structures
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Numeroff
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-07 00:00:00.000000000 Z
11
+ date: 2018-05-08 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Ruby implementations of a Stack, Queue and Linked List. More to come!
14
14
  email: jnumeroff@hotmail.com