linked_list_sourav 0.0.5 → 0.0.6
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/linked_list.rb +84 -2
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 73798711cb8b3dddf2ccc745a35f01634a4c60e9
|
4
|
+
data.tar.gz: 8da362213deac7a2f8fcc49715182d1c2087d143
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b8dd19371b3ee566c1cf771b8d250c590a03e8364d0050a7302b54a74515822ab1494f235c6a86369e6cf8d662929902989a363b00a59351b9b7360ff90c71a
|
7
|
+
data.tar.gz: 821099f6fdaa2cc1c01fadcdedc1486d27ea9db55fc817f71ab7baab92351a78349a8bb87e82b963293417cbfb18b139caaa212ad2c1fc60cb8a66b20ec89fe3
|
data/lib/linked_list.rb
CHANGED
@@ -13,13 +13,22 @@ module LinkedList
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
+
class DoublyNode
|
17
|
+
attr_accessor :data, :backward, :forward
|
18
|
+
def initialize(data, backward=nil, forward=nil)
|
19
|
+
@data = data
|
20
|
+
@backward = backward
|
21
|
+
@forward = forward
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
16
25
|
class Singly
|
17
26
|
def initialize(data) # constructor
|
18
27
|
if data.class == Array
|
19
28
|
@head = Node.new(data[0])
|
20
29
|
data.each.with_index { |datum, index| self.add(datum) if index > 0}
|
21
30
|
else
|
22
|
-
@head = Node.new(data
|
31
|
+
@head = Node.new(data)
|
23
32
|
end
|
24
33
|
self
|
25
34
|
end
|
@@ -53,7 +62,7 @@ module LinkedList
|
|
53
62
|
self
|
54
63
|
end
|
55
64
|
|
56
|
-
def add_a(data)
|
65
|
+
def add_a(data) # adds array members to the list
|
57
66
|
node = @head
|
58
67
|
while (node.pointer != nil)
|
59
68
|
node = node.pointer
|
@@ -111,4 +120,77 @@ module LinkedList
|
|
111
120
|
deleted_node = nil
|
112
121
|
end
|
113
122
|
end
|
123
|
+
|
124
|
+
class Doubly
|
125
|
+
def initialize(data)
|
126
|
+
if data.respond_to? :each
|
127
|
+
@head = DoublyNode.new(data[0])
|
128
|
+
data.each.with_index { |datum, index| self.add(datum) if index > 0}
|
129
|
+
else
|
130
|
+
@head = DoublyNode.new(data)
|
131
|
+
end
|
132
|
+
self
|
133
|
+
end
|
134
|
+
|
135
|
+
def add(data) # adds data to list
|
136
|
+
dnode = @head
|
137
|
+
while (dnode.forward != nil)
|
138
|
+
dnode = dnode.forward
|
139
|
+
end
|
140
|
+
dnode.forward = DoublyNode.new(data, dnode)
|
141
|
+
self
|
142
|
+
end
|
143
|
+
|
144
|
+
def head #returns head
|
145
|
+
@head
|
146
|
+
end
|
147
|
+
|
148
|
+
def parse # parses all the members
|
149
|
+
dnode = @head
|
150
|
+
while (dnode != nil)
|
151
|
+
puts dnode.data
|
152
|
+
dnode = dnode.forward
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
def to_a
|
157
|
+
dnode = @head
|
158
|
+
array = Array.new
|
159
|
+
while (dnode != nil)
|
160
|
+
array << dnode.data
|
161
|
+
dnode = dnode.forward
|
162
|
+
end
|
163
|
+
array
|
164
|
+
end
|
165
|
+
|
166
|
+
def to_s
|
167
|
+
dnode = @head
|
168
|
+
string = String.new(@head.data.to_s)
|
169
|
+
dnode = dnode.forward
|
170
|
+
while (dnode != nil)
|
171
|
+
string << ", " << dnode.data.to_s
|
172
|
+
dnode = dnode.forward
|
173
|
+
end
|
174
|
+
string
|
175
|
+
end
|
176
|
+
|
177
|
+
def find(data)
|
178
|
+
dnode = @head
|
179
|
+
while (dnode != nil && dnode.data != data )
|
180
|
+
dnode = dnode.forward
|
181
|
+
end
|
182
|
+
dnode
|
183
|
+
end
|
184
|
+
|
185
|
+
def delete(data)
|
186
|
+
dnode = find(data)
|
187
|
+
if dnode
|
188
|
+
dnode1 = dnode.backward
|
189
|
+
dnode2 = dnode.forward
|
190
|
+
dnode1.forward = dnode2
|
191
|
+
dnode2.backward = dnode1
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
end
|
114
196
|
end
|