linked-list 0.0.8 → 0.0.9
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/README.md +1 -1
- data/lib/linked-list/list.rb +24 -24
- data/lib/linked-list/node.rb +2 -1
- data/lib/linked-list/version.rb +1 -1
- data/linked-list.gemspec +2 -2
- data/test/list_test.rb +12 -0
- data/test/node_test.rb +9 -0
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c20945229e6503af0a2b24018ba42daddf18e1fa
|
4
|
+
data.tar.gz: fdc7f37ae8032cb9fde6e36e2b8822ee7b2e55a3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 55cf32c04d74ba3fe171fed27938c09cd79f4411c8344151ee7b1fe032028f2259c263c8ef50940a4b170ecb15cc79cdc26de8317461f010e7274d51dc33ea27
|
7
|
+
data.tar.gz: e639b4f3c874e46f4a28c218a24d27da981bc544e85a4419fb19d6096db6bdf0ba38b055a4108ad3d8cbb8586cbaa8c94d099c8dc57aa41515f963e30b6e5295
|
data/README.md
CHANGED
data/lib/linked-list/list.rb
CHANGED
@@ -35,7 +35,11 @@ module LinkedList
|
|
35
35
|
node = Node(node)
|
36
36
|
@head ||= node
|
37
37
|
|
38
|
-
|
38
|
+
if @tail
|
39
|
+
@tail.next = node
|
40
|
+
node.prev = @tail
|
41
|
+
end
|
42
|
+
|
39
43
|
@tail = node
|
40
44
|
|
41
45
|
@length += 1
|
@@ -56,6 +60,7 @@ module LinkedList
|
|
56
60
|
@tail ||= node
|
57
61
|
|
58
62
|
node.next = @head
|
63
|
+
@head.prev = node if @head
|
59
64
|
@head = node
|
60
65
|
|
61
66
|
@length += 1
|
@@ -70,15 +75,8 @@ module LinkedList
|
|
70
75
|
def pop
|
71
76
|
return nil unless @head
|
72
77
|
|
73
|
-
|
74
|
-
|
75
|
-
while(node = node.next)
|
76
|
-
next_to_tail = node unless node.next
|
77
|
-
end
|
78
|
-
@head = nil unless next_to_tail
|
79
|
-
|
80
|
-
tail = @tail
|
81
|
-
@tail = next_to_tail
|
78
|
+
tail = __pop
|
79
|
+
@head = nil unless @tail
|
82
80
|
|
83
81
|
@length -= 1
|
84
82
|
tail.data
|
@@ -116,16 +114,11 @@ module LinkedList
|
|
116
114
|
def reverse!
|
117
115
|
return self unless @head
|
118
116
|
|
119
|
-
|
120
|
-
|
121
|
-
@tail = prev_node
|
122
|
-
|
123
|
-
while(@head)
|
124
|
-
curr_node = __shift
|
125
|
-
curr_node.next = prev_node
|
126
|
-
prev_node = curr_node
|
117
|
+
__each do |curr_node|
|
118
|
+
curr_node.prev, curr_node.next = curr_node.next, curr_node.prev
|
127
119
|
end
|
128
|
-
@head =
|
120
|
+
@head, @tail = @tail, @head
|
121
|
+
|
129
122
|
self
|
130
123
|
end
|
131
124
|
|
@@ -138,7 +131,7 @@ module LinkedList
|
|
138
131
|
#
|
139
132
|
def each
|
140
133
|
return to_enum(__callee__) unless block_given?
|
141
|
-
__each { |
|
134
|
+
__each { |node| yield(node.data) }
|
142
135
|
end
|
143
136
|
|
144
137
|
# Converts list to array.
|
@@ -170,11 +163,18 @@ module LinkedList
|
|
170
163
|
head
|
171
164
|
end
|
172
165
|
|
166
|
+
def __pop
|
167
|
+
tail = @tail
|
168
|
+
@tail = @tail.prev
|
169
|
+
@tail.prev = nil if @tail
|
170
|
+
tail
|
171
|
+
end
|
172
|
+
|
173
173
|
def __each
|
174
|
-
|
175
|
-
while(
|
176
|
-
yield
|
177
|
-
|
174
|
+
curr_node = @head
|
175
|
+
while(curr_node)
|
176
|
+
yield curr_node
|
177
|
+
curr_node = curr_node.next
|
178
178
|
end
|
179
179
|
end
|
180
180
|
end
|
data/lib/linked-list/node.rb
CHANGED
data/lib/linked-list/version.rb
CHANGED
data/linked-list.gemspec
CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = Linked::List::VERSION
|
9
9
|
spec.authors = ['Yury Velikanau']
|
10
10
|
spec.email = ['yury.velikanau@gmail.com']
|
11
|
-
spec.description = %q{Ruby implementation of Linked List, following some Ruby idioms.}
|
12
|
-
spec.summary = %q{Ruby implementation of Linked List, following some Ruby idioms.}
|
11
|
+
spec.description = %q{Ruby implementation of Doubly Linked List, following some Ruby idioms.}
|
12
|
+
spec.summary = %q{Ruby implementation of Doubly Linked List, following some Ruby idioms.}
|
13
13
|
spec.homepage = 'https://github.com/spectator/linked-list'
|
14
14
|
spec.license = 'MIT'
|
15
15
|
|
data/test/list_test.rb
CHANGED
@@ -42,6 +42,12 @@ describe LinkedList::List do
|
|
42
42
|
assert_equal node_1.next, node_2
|
43
43
|
end
|
44
44
|
|
45
|
+
it 'sets reference to the prev node' do
|
46
|
+
list.push(node_1)
|
47
|
+
list.push(node_2)
|
48
|
+
assert_equal node_2.prev, node_1
|
49
|
+
end
|
50
|
+
|
45
51
|
it 'increases list length by 1' do
|
46
52
|
list.push(node_1)
|
47
53
|
assert_equal 1, list.length
|
@@ -75,6 +81,12 @@ describe LinkedList::List do
|
|
75
81
|
assert_equal node_2.next, node_1
|
76
82
|
end
|
77
83
|
|
84
|
+
it 'sets reference to the prev node' do
|
85
|
+
list.unshift(node_1)
|
86
|
+
list.unshift(node_2)
|
87
|
+
assert_equal node_1.prev, node_2
|
88
|
+
end
|
89
|
+
|
78
90
|
it 'increases list length by 1' do
|
79
91
|
list.unshift(node_1)
|
80
92
|
assert_equal 1, list.length
|
data/test/node_test.rb
CHANGED
@@ -11,6 +11,10 @@ describe LinkedList::Node do
|
|
11
11
|
it 'assigns nil to next' do
|
12
12
|
assert_nil node.next
|
13
13
|
end
|
14
|
+
|
15
|
+
it 'assigns nil to prev' do
|
16
|
+
assert_nil node.prev
|
17
|
+
end
|
14
18
|
end
|
15
19
|
|
16
20
|
describe 'accessors' do
|
@@ -23,6 +27,11 @@ describe LinkedList::Node do
|
|
23
27
|
node.next = 'bar'
|
24
28
|
assert_equal 'bar', node.next
|
25
29
|
end
|
30
|
+
|
31
|
+
it '#prev' do
|
32
|
+
node.prev = 'xyz'
|
33
|
+
assert_equal 'xyz', node.prev
|
34
|
+
end
|
26
35
|
end
|
27
36
|
|
28
37
|
describe 'conversion' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: linked-list
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yury Velikanau
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-12-
|
11
|
+
date: 2013-12-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -78,7 +78,7 @@ dependencies:
|
|
78
78
|
- - '>='
|
79
79
|
- !ruby/object:Gem::Version
|
80
80
|
version: '0'
|
81
|
-
description: Ruby implementation of Linked List, following some Ruby idioms.
|
81
|
+
description: Ruby implementation of Doubly Linked List, following some Ruby idioms.
|
82
82
|
email:
|
83
83
|
- yury.velikanau@gmail.com
|
84
84
|
executables: []
|
@@ -124,7 +124,7 @@ rubyforge_project:
|
|
124
124
|
rubygems_version: 2.1.11
|
125
125
|
signing_key:
|
126
126
|
specification_version: 4
|
127
|
-
summary: Ruby implementation of Linked List, following some Ruby idioms.
|
127
|
+
summary: Ruby implementation of Doubly Linked List, following some Ruby idioms.
|
128
128
|
test_files:
|
129
129
|
- test/conversions_test.rb
|
130
130
|
- test/list_test.rb
|