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.
Files changed (4) hide show
  1. checksums.yaml +7 -0
  2. data/lib/linked_list.rb +73 -0
  3. data/lib/node.rb +24 -0
  4. 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
@@ -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: []