linked_list_sourav 0.0.2
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 +7 -0
- data/lib/linked_list.rb +73 -0
- data/lib/node.rb +24 -0
- metadata +45 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 173f30574433c08a8dfbab1f4118cd78826830d0
|
4
|
+
data.tar.gz: 95bbb800fe469579efb56f0abb8fb837ffbec7d9
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 6bc70d07aa80158e780f49bdc613d5ae0c74e2cc9a4e43e782064ead858d7087939a651c0ada84d8ada496dc543be8fcec70eb7ea06197d2928e4c1c66cfc385
|
7
|
+
data.tar.gz: 624467a6d655e87959ff0de7f18ac4c6bc9ff927c1a5c295291230174244271fdca27ecf074ce2008fd4ebc98a1ab4853a7708ddd68e20558906ae7d42142fdb
|
data/lib/linked_list.rb
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
require_relative 'node'
|
2
|
+
|
3
|
+
class LinkedList
|
4
|
+
def initialize(data) # constructor
|
5
|
+
if data.class == Array
|
6
|
+
@head = Node.new(data[0])
|
7
|
+
data.each.with_index { |datum, index| self.add(datum) if index > 0}
|
8
|
+
else
|
9
|
+
@head = Node.new(data[0])
|
10
|
+
end
|
11
|
+
self
|
12
|
+
end
|
13
|
+
|
14
|
+
def head #returns head
|
15
|
+
@head
|
16
|
+
end
|
17
|
+
|
18
|
+
def parse # parses all the members
|
19
|
+
node = @head
|
20
|
+
while (node != nil)
|
21
|
+
puts node.get_data
|
22
|
+
node = node.get_pointer
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def add(data) # adds new members
|
27
|
+
node = @head
|
28
|
+
while (node.get_pointer != nil)
|
29
|
+
node = node.get_pointer
|
30
|
+
end
|
31
|
+
node.set_pointer(Node.new(data, nil))
|
32
|
+
self
|
33
|
+
end
|
34
|
+
|
35
|
+
def to_a # returns an array of all data
|
36
|
+
node = @head
|
37
|
+
array = Array.new
|
38
|
+
while (node != nil)
|
39
|
+
array << node.get_data
|
40
|
+
node = node.get_pointer
|
41
|
+
end
|
42
|
+
array
|
43
|
+
end
|
44
|
+
|
45
|
+
def to_s # returns all data in form of string
|
46
|
+
node = @head
|
47
|
+
string = String.new
|
48
|
+
while (node != nil)
|
49
|
+
string << ", " << node.get_data.to_s
|
50
|
+
node = node.get_pointer
|
51
|
+
end
|
52
|
+
string
|
53
|
+
end
|
54
|
+
|
55
|
+
def delete(data) # deletes a single member
|
56
|
+
node = @head
|
57
|
+
deleted_node = ''
|
58
|
+
if node.get_data === data
|
59
|
+
@head = node.get_pointer
|
60
|
+
deleted_node = node
|
61
|
+
else
|
62
|
+
node = @head
|
63
|
+
while( node != nil && node.get_pointer != nil && (node.get_pointer).get_data != data)
|
64
|
+
node = node.get_pointer
|
65
|
+
end
|
66
|
+
if (node != nil) && (node.get_pointer != nil)
|
67
|
+
node.set_pointer((node.get_pointer).get_pointer)
|
68
|
+
end
|
69
|
+
deleted_node = node.get_pointer
|
70
|
+
end
|
71
|
+
deleted_node = nil
|
72
|
+
end
|
73
|
+
end
|
data/lib/node.rb
ADDED
@@ -0,0 +1,24 @@
|
|
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
|
metadata
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: linked_list_sourav
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Sourav Moitra
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-02-14 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: A simple linked list gem
|
14
|
+
email: sourav.moitr@gmail.con
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- lib/linked_list.rb
|
20
|
+
- lib/node.rb
|
21
|
+
homepage: https://github.com/xw19/linked_list
|
22
|
+
licenses:
|
23
|
+
- MIT
|
24
|
+
metadata: {}
|
25
|
+
post_install_message:
|
26
|
+
rdoc_options: []
|
27
|
+
require_paths:
|
28
|
+
- lib
|
29
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
35
|
+
requirements:
|
36
|
+
- - ">="
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '0'
|
39
|
+
requirements: []
|
40
|
+
rubyforge_project:
|
41
|
+
rubygems_version: 2.4.5
|
42
|
+
signing_key:
|
43
|
+
specification_version: 4
|
44
|
+
summary: Linked list library for ruby
|
45
|
+
test_files: []
|