linked_list_sourav 0.0.13 → 0.0.14

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_sourav.rb +22 -9
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 40e267bfca7eeb6aab2b6b39ef283dd11c35c6ab
4
- data.tar.gz: 31e48251e30853e24c7dc3cc498fe92a9cd32f15
3
+ metadata.gz: 7d20fe6458b9632734e8ec4247827fd66153bf3f
4
+ data.tar.gz: 38085eb4af4dc04f999ce2962567b9c3aa667ea0
5
5
  SHA512:
6
- metadata.gz: 70c632fc3bc7e6b80435937c55e291ca4ca8fdc652fc7029aab6d02f9ad8f4762b4298946c52d1d6424b53ff75436e69c93dba8d04e7328f078e386f2addea3e
7
- data.tar.gz: 29f4eb801595c0b8521e7719db2d7fa1cee2548c03580033dc6a0f6eb303ef09fc21c03a788fbaf636109e3c4bd27fc25e5a5127241eba2467dba61ad5e5abe4
6
+ metadata.gz: b5289719f0a93b692c8d89955696ca69f4bb3ce1bb56ff6f9d3b92a23470abecac41d393cb2ce6a631e52a11377e8b7368faaba7b2852f35fc7c2a34571ac555
7
+ data.tar.gz: 19a0ce31b8ee157576fb0332f0ebcbfb23d2f3c6e060ced731b116797d3bbee5ec041cf7ad661924538bd7d01660f954936a74562e3de60155b1c14982698eb2
@@ -34,13 +34,14 @@ class LinkedList
34
34
  end
35
35
 
36
36
  class Singly
37
- def initialize(data) # constructor
37
+ def initialize(data = nil) # constructor
38
38
  if data.class == Array
39
39
  @head = Node.new(data[0])
40
40
  data.each.with_index { |datum, index| self.add(datum) if index > 0}
41
41
  else
42
42
  @head = Node.new(data)
43
43
  end
44
+ @count = 1
44
45
  self
45
46
  end
46
47
 
@@ -64,12 +65,17 @@ class LinkedList
64
65
  node
65
66
  end
66
67
 
68
+ def no_of_nodes
69
+ @count
70
+ end
71
+
67
72
  def add(data) # adds new members
68
73
  node = @head
69
74
  while (node.forward != nil)
70
75
  node = node.forward
71
76
  end
72
77
  node.forward = Node.new(data)
78
+ @count += 1
73
79
  node.forward
74
80
  end
75
81
 
@@ -118,6 +124,7 @@ class LinkedList
118
124
  if node.data === data
119
125
  @head = node.forward
120
126
  deleted_node = node
127
+ @count -= 1
121
128
  else
122
129
  node = @head
123
130
  while( node != nil && node.forward != nil && (node.forward).data != data)
@@ -125,6 +132,7 @@ class LinkedList
125
132
  end
126
133
  if (node != nil) && (node.forward != nil)
127
134
  node.forward = (node.forward).forward
135
+ @count -= 1
128
136
  end
129
137
  deleted_node = node.forward
130
138
  end
@@ -140,6 +148,7 @@ class LinkedList
140
148
  else
141
149
  @head = DoublyNode.new(data)
142
150
  end
151
+ @count = 1
143
152
  self
144
153
  end
145
154
 
@@ -149,19 +158,23 @@ class LinkedList
149
158
  dnode = dnode.forward
150
159
  end
151
160
  dnode.forward = DoublyNode.new(data, dnode)
161
+ @count += 1
152
162
  self
153
163
  end
154
164
 
155
165
  def delete(data) # deletes a node
156
166
  dnode = find(data)
157
- if dnode === @head
158
- @head = dnode.forward
159
- elsif dnode.forward == nil
160
- prev_dnode = dnode.backward
161
- prev_dnode.forward = nil
162
- else
163
- prev_dnode, next_dnode = dnode.backward, dnode.forward
164
- prev_dnode.forward, next_dnode.backward = next_dnode, prev_dnode
167
+ if dnode
168
+ if dnode === @head
169
+ @head = dnode.forward
170
+ elsif dnode.forward == nil
171
+ prev_dnode = dnode.backward
172
+ prev_dnode.forward = nil
173
+ else
174
+ prev_dnode, next_dnode = dnode.backward, dnode.forward
175
+ prev_dnode.forward, next_dnode.backward = next_dnode, prev_dnode
176
+ end
177
+ @count -= 1
165
178
  end
166
179
  dnode = nil
167
180
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: linked_list_sourav
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.13
4
+ version: 0.0.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sourav Moitra
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-14 00:00:00.000000000 Z
11
+ date: 2015-03-14 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A simple linked list gem
14
14
  email: sourav.moitr@gmail.con