linked_list_sourav 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|