ruby_collections 0.0.3 → 0.0.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bb77ec104140f7d24e8026660ed783134ed5fb61
4
- data.tar.gz: fd78dfe9362a368154da35a9e18032222e2ecfbb
3
+ metadata.gz: 409e6c00234df5a85788da2274f54e15b8eb8d43
4
+ data.tar.gz: 82b5595664dd34d7e9dc835c5c14360a60cb9734
5
5
  SHA512:
6
- metadata.gz: aa6ea383b74b39620fe0502e88c7a65c255b95f895640d35bec2acf5ae0018bc550dba42f27cf3b27cbbd971144ab42771bc3f8887d43da2a27b5d016c513c24
7
- data.tar.gz: 58f49231acf86c1f78bedc329cdb85a2e583f9e6cae4e5a39e4b4c9f0d3ca043c8ff388351781c713047892d991de61036089724bfe8f87637c5e7fb089aa786
6
+ metadata.gz: 7379fdab9b3e7d305ef34ccf19b55f137c7f9bc953caa6eae409222657ff5dcb23c9e279295cb88f6c2c91cff98ff4f60369ecb0991ba9c029a946ebbcc44041
7
+ data.tar.gz: 552ac15b5b92f7f852858e71c256fd3e2676a7f45cb1ce0c2792007de842080e5eb88a82f976e9dd97bb1846b7728560c4939d99c4db3372529ad0f1021e3797
data/README.md CHANGED
@@ -20,7 +20,7 @@ Or install it yourself as:
20
20
 
21
21
  ## Usage
22
22
 
23
- Supported Data Structures: Max Heap, Min Heap
23
+ Supported Data Structures: Max Heap, Min Heap, Stack, LinkedList
24
24
 
25
25
  ### RubyCollections::MaxHeap
26
26
 
@@ -62,6 +62,34 @@ stack.top # => 1
62
62
 
63
63
  ```
64
64
 
65
+ ### RubyCollections::LinkedList
66
+
67
+ ```ruby
68
+
69
+ list = RubyCollections::LinkedList.new
70
+
71
+ list.size # => 0
72
+
73
+ list.top # => nil
74
+
75
+ list.isEmpty? # => true
76
+
77
+ list.add(1) # => 1 (number of elements in list)
78
+
79
+ list.add(2) # => 2 (number of elements in list)
80
+
81
+ list.to_s # => "[2, 1]"
82
+
83
+ list.add(3,1) # => 3 (number of elements in list)
84
+
85
+ list.to_s # => "[2, 3, 1]"
86
+
87
+ list.remove(2) # => removes element at index 2
88
+
89
+ list.to_s # => "[2, 3]"
90
+
91
+ ```
92
+
65
93
  ## Development
66
94
 
67
95
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -1,3 +1,4 @@
1
1
  require "ruby_collections/max_heap"
2
2
  require "ruby_collections/min_heap"
3
- require "ruby_collections/stack"
3
+ require "ruby_collections/stack"
4
+ require "ruby_collections/linked_list"
@@ -0,0 +1,73 @@
1
+ module RubyCollections
2
+ class LinkedList
3
+ attr_accessor :size, :top
4
+
5
+ def initialize
6
+ @size = 0
7
+ @top = nil
8
+ end
9
+
10
+ def isEmpty?
11
+ size.zero?
12
+ end
13
+
14
+ def add(data, index = nil)
15
+ return nil if index and index >= size
16
+ if index
17
+ new_node = Node.new data, nil
18
+ get(index-1).setNext(new_node)
19
+ else
20
+ node = Node.new(data, top)
21
+ @top = node
22
+ end
23
+ @size += 1
24
+ end
25
+
26
+ def get(index)
27
+ node = top
28
+ index.times {node = node.getNext}
29
+ return node
30
+ end
31
+
32
+ def remove(index)
33
+ node = get(index-1)
34
+ to_be_removed = node.getNext
35
+ node.setNext(to_be_removed.getNext)
36
+ @size -= 1
37
+ end
38
+
39
+ def to_s
40
+ data = []
41
+ data << (node = top).data
42
+ (size-1).times {data << (node = node.getNext).data}
43
+ return data.to_s
44
+ end
45
+
46
+ class Node
47
+ attr_accessor :data
48
+
49
+ def initialize(data, next_node)
50
+ @data = data
51
+ @next = next_node.object_id
52
+ end
53
+
54
+ def getNext
55
+ ObjectSpace._id2ref(@next)
56
+ end
57
+
58
+ def setNext(node)
59
+ return if node.nil?
60
+ next_node_id = instance_variable_get(:@next)
61
+ @next = node.object_id
62
+ node.instance_variable_set(:@next, next_node_id)
63
+ return node
64
+ end
65
+
66
+ def to_s
67
+ "#{data}"
68
+ end
69
+ end
70
+
71
+ end
72
+
73
+ end
@@ -1,3 +1,3 @@
1
1
  module RubyCollections
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_collections
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vikash Vikram
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-04-01 00:00:00.000000000 Z
11
+ date: 2015-04-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -58,6 +58,7 @@ files:
58
58
  - bin/setup
59
59
  - lib/ruby_collections.rb
60
60
  - lib/ruby_collections/collections.rb
61
+ - lib/ruby_collections/linked_list.rb
61
62
  - lib/ruby_collections/max_heap.rb
62
63
  - lib/ruby_collections/min_heap.rb
63
64
  - lib/ruby_collections/stack.rb