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