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 +4 -4
- data/lib/data_structures/linked_list.rb +27 -13
- data/lib/data_structures/queue.rb +2 -0
- data/lib/data_structures/stack.rb +2 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 35b0dcb999c08a0859b304a79c02e1ce5934d217
|
4
|
+
data.tar.gz: b49e0522296bac17123c7210088eb994b4b28370
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
5
|
-
@head =
|
6
|
-
@tail =
|
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 "
|
16
|
+
return "-" if self.empty?
|
17
17
|
|
18
|
-
vals = self.
|
18
|
+
vals = self.to_a { |n| n.send(:val) }
|
19
19
|
vals.join(' -> ')
|
20
20
|
end
|
21
21
|
|
22
22
|
def inspect
|
23
|
-
return "
|
23
|
+
return "-" if self.empty?
|
24
24
|
|
25
|
-
vals = self.
|
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 =
|
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 =
|
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 { |
|
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 { |
|
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
|
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)
|
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:
|
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-
|
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
|