linked_list_sourav 0.0.7 → 0.0.8

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 +32 -70
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bda592acfd297e23be8184a753f0827f2a710bcc
4
- data.tar.gz: 87937108038e98f019938939d50039ae939db847
3
+ metadata.gz: 97c3315a6b053758f70046f9b41f7763a81caf2e
4
+ data.tar.gz: 217b7391d54e4a031267a256014424dc5762ed8f
5
5
  SHA512:
6
- metadata.gz: feed531a4eaabc6ea648cf162b2272167edf40719610240a5b10e0faf1cbae6d83cc439ee75520386b8438d2fa490cdc788ef072201361d164bf9a2775588413
7
- data.tar.gz: c637dbf5ce5e9506dd326e568ab2ff469ee90023e976b3dc590af2a99ca0081f5d9bd6d5939be397e0c4aec4c8b09ff2ad1d90d5d256248873cc5c52a0724a0d
6
+ metadata.gz: 38f4e7db8d6da9aea93e5f5e3135851270cdf410cb1d0d424d6175d556efc68abde1ec9e0819d389f81df1f95fe0afa151c7b71fd0e3695a2964d124975dd650
7
+ data.tar.gz: 42655e960b8bf10fc9bcf1365825acfdf174b82718f52cb271824500730b06b563511b22cdd37e4ac57b2c25ba144510e6a0ff2ac5d3c9a09cdd896753bfe8ce
data/lib/linked_list.rb CHANGED
@@ -1,15 +1,15 @@
1
1
  class LinkedList
2
2
 
3
3
  class Node # this class defines one node the basic building blog of linked list
4
- attr_accessor :data, :pointer # data for holding data and pointers refers to next node
4
+ attr_accessor :data, :forward # data for holding data and forwards refers to next node
5
5
 
6
- def initialize(data, pointer = nil) #intializes when new is invoked
6
+ def initialize(data, forward = nil) #intializes when new is invoked
7
7
  @data = data
8
- @pointer = pointer
8
+ @forward = forward
9
9
  end
10
10
 
11
11
  def to_s
12
- puts "Data: #{data} Points to: #{self.pointer.data}"
12
+ puts "Data: #{data} Points to: #{self.forward.data}"
13
13
  end
14
14
  end
15
15
 
@@ -41,31 +41,31 @@ class LinkedList
41
41
  node = @head
42
42
  while (node != nil)
43
43
  puts node.data
44
- node = node.pointer
44
+ node = node.forward
45
45
  end
46
46
  end
47
47
 
48
48
  def find(data)
49
49
  node = @head
50
50
  while (node != nil && node.data != data )
51
- node = node.pointer
51
+ node = node.forward
52
52
  end
53
53
  node
54
54
  end
55
55
 
56
56
  def add(data) # adds new members
57
57
  node = @head
58
- while (node.pointer != nil)
59
- node = node.pointer
58
+ while (node.forward != nil)
59
+ node = node.forward
60
60
  end
61
- node.pointer = Node.new(data)
61
+ node.forward = Node.new(data)
62
62
  self
63
63
  end
64
64
 
65
65
  def add_a(data) # adds array members to the list
66
66
  node = @head
67
- while (node.pointer != nil)
68
- node = node.pointer
67
+ while (node.forward != nil)
68
+ node = node.forward
69
69
  end
70
70
  if data.respond_to? :each
71
71
  data.each { |datum| self.add(datum)}
@@ -85,7 +85,7 @@ class LinkedList
85
85
  array = Array.new
86
86
  while (node != nil)
87
87
  array << node.data
88
- node = node.pointer
88
+ node = node.forward
89
89
  end
90
90
  array
91
91
  end
@@ -93,10 +93,10 @@ class LinkedList
93
93
  def to_s # returns all data in form of string
94
94
  node = @head
95
95
  string = String.new(@head.data.to_s)
96
- node = node.pointer
96
+ node = node.forward
97
97
  while (node != nil)
98
98
  string << ", " << node.data.to_s
99
- node = node.pointer
99
+ node = node.forward
100
100
  end
101
101
  string
102
102
  end
@@ -105,24 +105,24 @@ class LinkedList
105
105
  node = @head
106
106
  deleted_node = ''
107
107
  if node.data === data
108
- @head = node.pointer
108
+ @head = node.forward
109
109
  deleted_node = node
110
110
  else
111
111
  node = @head
112
- while( node != nil && node.pointer != nil && (node.pointer).data != data)
113
- node = node.pointer
112
+ while( node != nil && node.forward != nil && (node.forward).data != data)
113
+ node = node.forward
114
114
  end
115
- if (node != nil) && (node.pointer != nil)
116
- node.pointer = (node.pointer).pointer
115
+ if (node != nil) && (node.forward != nil)
116
+ node.forward = (node.forward).forward
117
117
  end
118
- deleted_node = node.pointer
118
+ deleted_node = node.forward
119
119
  end
120
120
  deleted_node = nil
121
121
  end
122
122
  end
123
123
 
124
- class Doubly
125
- def initialize(data)
124
+ class Doubly < Singly
125
+ def initialize(data) # intializes
126
126
  if data.respond_to? :each
127
127
  @head = DoublyNode.new(data[0])
128
128
  data.each.with_index { |datum, index| self.add(datum) if index > 0}
@@ -141,56 +141,18 @@ class LinkedList
141
141
  self
142
142
  end
143
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)
144
+ def delete(data) # deletes a node
186
145
  dnode = find(data)
187
- if dnode
188
- dnode1 = dnode.backward
189
- dnode2 = dnode.forward
190
- dnode1.forward = dnode2
191
- dnode2.backward = dnode1
146
+ if dnode === @head
147
+ @head = dnode.forward
148
+ elsif dnode.forward == nil
149
+ prev_dnode = dnode.backward
150
+ prev_dnode.forward = nil
151
+ else
152
+ prev_dnode, next_dnode = dnode.backward, dnode.forward
153
+ prev_dnode.forward, next_dnode.backward = next_dnode, prev_dnode
192
154
  end
155
+ dnode = nil
193
156
  end
194
-
195
157
  end
196
158
  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.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sourav Moitra