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.
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