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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/linked_list.rb +84 -2
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 250fa17879a124ffde4d0c9929c735935429634f
4
- data.tar.gz: b73428291b8d8b7e84835e76fa70a6a9343d09c7
3
+ metadata.gz: 73798711cb8b3dddf2ccc745a35f01634a4c60e9
4
+ data.tar.gz: 8da362213deac7a2f8fcc49715182d1c2087d143
5
5
  SHA512:
6
- metadata.gz: 579307e133e1b39b1504c9446636b1dfb0f8a7626d21464575fd2cd3010976e8ecd1fe1dba82c479820b56ce6fa51d32cae5983fd820ac538d4adc396760bcfd
7
- data.tar.gz: 5daaf83963d4960fcf175ca430080b551bb0bb67381538609f6837cc061ce682abfa4acf8538a163c40140e9ad022129d5d3bd4223678dc8956620e8ab353ecf
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[0])
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: linked_list_sourav
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sourav Moitra