linked_list_sourav 0.0.2 → 0.0.3
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.
- checksums.yaml +4 -4
- data/lib/linked_list.rb +69 -54
- metadata +1 -2
- data/lib/node.rb +0 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5460857f08a6425d9f801fbfc82e1ae19a5ee042
|
4
|
+
data.tar.gz: 870c04620729d17bc79cb661923412bc6c814d44
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 29a5f1a71b68edea60e257287e96c05acd102e799b0de8f406e2ebf2388636edd87267cea75a1662c0ece3f422ecce0edd8c8cf2b52bc0b39929d8c31fb10228
|
7
|
+
data.tar.gz: a703506758a24b32f78a370bb9902756384f7c22c132ac64b8b88079d47a9906b4283bd63101efa7924ab7ae51a854ba9fe9a8b300785c06a0b4d296c941f629
|
data/lib/linked_list.rb
CHANGED
@@ -1,73 +1,88 @@
|
|
1
|
-
|
1
|
+
module LinkedList
|
2
2
|
|
3
|
-
class
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
data
|
8
|
-
|
9
|
-
@head = Node.new(data[0])
|
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
|
5
|
+
|
6
|
+
def initialize(data, pointer = nil) #intializes when new is invoked
|
7
|
+
@data = data
|
8
|
+
@pointer = pointer
|
10
9
|
end
|
11
|
-
self
|
12
|
-
end
|
13
10
|
|
14
|
-
|
15
|
-
|
11
|
+
def to_s
|
12
|
+
puts "Data: #{data} Points to: #{self.pointer.data}"
|
13
|
+
end
|
16
14
|
end
|
17
15
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
16
|
+
class SinglyLinkedList
|
17
|
+
def initialize(data) # constructor
|
18
|
+
if data.class == Array
|
19
|
+
@head = Node.new(data[0])
|
20
|
+
data.each.with_index { |datum, index| self.add(datum) if index > 0}
|
21
|
+
else
|
22
|
+
@head = Node.new(data[0])
|
23
|
+
end
|
24
|
+
self
|
23
25
|
end
|
24
|
-
end
|
25
26
|
|
26
|
-
|
27
|
-
|
28
|
-
while (node.get_pointer != nil)
|
29
|
-
node = node.get_pointer
|
27
|
+
def head #returns head
|
28
|
+
@head
|
30
29
|
end
|
31
|
-
node.set_pointer(Node.new(data, nil))
|
32
|
-
self
|
33
|
-
end
|
34
30
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
31
|
+
def parse # parses all the members
|
32
|
+
node = @head
|
33
|
+
while (node != nil)
|
34
|
+
puts node.data
|
35
|
+
node = node.pointer
|
36
|
+
end
|
41
37
|
end
|
42
|
-
array
|
43
|
-
end
|
44
38
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
node =
|
39
|
+
def add(data) # adds new members
|
40
|
+
node = @head
|
41
|
+
while (node.pointer != nil)
|
42
|
+
node = node.pointer
|
43
|
+
end
|
44
|
+
node.pointer = Node.new(data)
|
45
|
+
self
|
51
46
|
end
|
52
|
-
string
|
53
|
-
end
|
54
47
|
|
55
|
-
|
56
|
-
node = @head
|
57
|
-
deleted_node = ''
|
58
|
-
if node.get_data === data
|
59
|
-
@head = node.get_pointer
|
60
|
-
deleted_node = node
|
61
|
-
else
|
48
|
+
def to_a # returns an array of all data
|
62
49
|
node = @head
|
63
|
-
|
64
|
-
|
50
|
+
array = Array.new
|
51
|
+
while (node != nil)
|
52
|
+
array << node.data
|
53
|
+
node = node.pointer
|
65
54
|
end
|
66
|
-
|
67
|
-
|
55
|
+
array
|
56
|
+
end
|
57
|
+
|
58
|
+
def to_s # returns all data in form of string
|
59
|
+
node = @head
|
60
|
+
string = String.new(@head.data.to_s)
|
61
|
+
node = node.pointer
|
62
|
+
while (node != nil)
|
63
|
+
string << ", " << node.data.to_s
|
64
|
+
node = node.pointer
|
65
|
+
end
|
66
|
+
string
|
67
|
+
end
|
68
|
+
|
69
|
+
def delete(data) # deletes a single member
|
70
|
+
node = @head
|
71
|
+
deleted_node = ''
|
72
|
+
if node.data === data
|
73
|
+
@head = node.pointer
|
74
|
+
deleted_node = node
|
75
|
+
else
|
76
|
+
node = @head
|
77
|
+
while( node != nil && node.pointer != nil && (node.pointer).data != data)
|
78
|
+
node = node.pointer
|
79
|
+
end
|
80
|
+
if (node != nil) && (node.pointer != nil)
|
81
|
+
node.pointer = (node.pointer).pointer
|
82
|
+
end
|
83
|
+
deleted_node = node.pointer
|
68
84
|
end
|
69
|
-
deleted_node =
|
85
|
+
deleted_node = nil
|
70
86
|
end
|
71
|
-
deleted_node = nil
|
72
87
|
end
|
73
88
|
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.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sourav Moitra
|
@@ -17,7 +17,6 @@ extensions: []
|
|
17
17
|
extra_rdoc_files: []
|
18
18
|
files:
|
19
19
|
- lib/linked_list.rb
|
20
|
-
- lib/node.rb
|
21
20
|
homepage: https://github.com/xw19/linked_list
|
22
21
|
licenses:
|
23
22
|
- MIT
|
data/lib/node.rb
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
class Node # this class defines one node the basic building blog of linked list
|
2
|
-
attr_accessor :data, :pointer # data for holding data and pointers refers to next node
|
3
|
-
|
4
|
-
def initialize(data, pointer = nil) #intializes when new is invoked
|
5
|
-
@data = data
|
6
|
-
@pointer = pointer
|
7
|
-
end
|
8
|
-
|
9
|
-
def get_pointer # returns next node
|
10
|
-
@pointer
|
11
|
-
end
|
12
|
-
|
13
|
-
def set_pointer(pointer) #sets next node
|
14
|
-
@pointer = pointer
|
15
|
-
end
|
16
|
-
|
17
|
-
def set_data data # sets data
|
18
|
-
@data = data
|
19
|
-
end
|
20
|
-
|
21
|
-
def get_data # returns data
|
22
|
-
@data
|
23
|
-
end
|
24
|
-
end
|