ruby_structures 0.0.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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