linked_list_sourav 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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: []