ds_algo 0.0.2 → 0.0.3

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
  SHA256:
3
- metadata.gz: c1536c7b3185ffc764362743a17ffb569ce80bd4db2689c999b1efee71e0fe64
4
- data.tar.gz: 58c3348b0b08cce10bc984b858d8386d1d975af25d2bab88dd050a9436d56b14
3
+ metadata.gz: 82c505780e91d3c5d225f980a86ca89b808ee40b69a87e83abcc8f6df49705d3
4
+ data.tar.gz: a20a2f40bb4379a27f93ba4159e3b4cb50edc0f1a2e607980fb71b3199e0d0f2
5
5
  SHA512:
6
- metadata.gz: b159159389194046ef3e808db226273d3a26594d84abda651a2f86bf72fb6b49ddd49220f8070004398a337dacd39cda2223b33e2ce4bdfa5caee3ad6fd3d2dd
7
- data.tar.gz: 0dbbc2cb5ad421c3140d9f611edeeed5beff62335b895876842d070a03246ddeac5efbacb35b28fe256236cb2f5e4be997f4eef054621fbf4836081ffb343474
6
+ metadata.gz: 45c27cdc89faabf7be5361e4fb465c5723744829b2029fc1144197e5fae04f27a922f1492f771b523b94c8f95285ffcdc19fd584d54f17ecae3590294213d832
7
+ data.tar.gz: 737eef7464aad01d508905a7cadd2185e34483475c8465ac23ae30194dce1d9886d7349ff8fc68318eba76f1a8058fda89d8304c39ecff08ab83946667d4ba27
@@ -0,0 +1,118 @@
1
+ # frozen_string_literal: true
2
+
3
+ # lib/data_struct/linked_list.rb
4
+ class SNode
5
+ attr_accessor :data, :next_val
6
+ def initialize(data, next_val = nil)
7
+ @data = data
8
+ @next_val = next_val
9
+ end
10
+ end
11
+
12
+ class DNode
13
+ attr_accessor :data, :next_val, :pre_val
14
+ def initialize(data, next_val = nil, pre_val = nil)
15
+ @data = data
16
+ @next_val = next_val
17
+ @pre_val = pre_val
18
+ end
19
+ end
20
+
21
+ class LinkedList
22
+ attr_accessor :head, :length
23
+ def initialize
24
+ @head = nil
25
+ @length = 0
26
+ end
27
+
28
+ def shift(val)
29
+ in_length
30
+ @head = SNode.new val, @head
31
+ end
32
+
33
+ def push(val)
34
+ in_length
35
+ return @head = SNode.new(val) if @head.nil?
36
+
37
+ node = @head
38
+ (@length - 2).times do
39
+ node = node.next_val
40
+ end
41
+ node.next_val = SNode.new val
42
+ end
43
+
44
+ def pop
45
+ node = @head
46
+ if @length.zero?
47
+ raise 'Error: List is empty'
48
+ else
49
+ de_length
50
+ (@length - 1).times do
51
+ node = node.next_val
52
+ end
53
+ node.next_val = nil
54
+ end
55
+
56
+ @head
57
+ end
58
+
59
+ def to_s
60
+ node = @head
61
+ str = ''
62
+ (@length - 1).times do
63
+ str += "#{node.data} "
64
+ node = node.next_val
65
+ end
66
+ str
67
+ end
68
+
69
+ def to_a
70
+ node = @head
71
+ arr = []
72
+ @length.times do
73
+ arr << node.data
74
+ node = node.next_val
75
+ end
76
+ arr
77
+ end
78
+
79
+ def each
80
+ node = @head
81
+ arr = []
82
+ @length.times do
83
+ arr << yield(node.data)
84
+ node = node.next_val
85
+ end
86
+ arr
87
+ end
88
+
89
+ def index(index_val)
90
+ raise 'index value higher than current length of list' if @length - 1 < index_val
91
+
92
+ node = @head
93
+ index_val.times do
94
+ node = node.next_val
95
+ end
96
+ node.data
97
+ end
98
+
99
+ def index_of(val)
100
+ node = @head
101
+ @length.times do
102
+ return node.data if node.data == val
103
+
104
+ node = node.next_val
105
+ end
106
+ raise 'value not found'
107
+ end
108
+
109
+ private
110
+
111
+ def in_length
112
+ @length += 1
113
+ end
114
+
115
+ def de_length
116
+ @length -= 1
117
+ end
118
+ end
metadata CHANGED
@@ -1,22 +1,23 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ds_algo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - imhtapm
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-26 00:00:00.000000000 Z
11
+ date: 2019-07-27 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: collection of data structures and algorithms for learning and to build
14
+ (under development
14
15
  email: imhtapm@gmail.com
15
16
  executables: []
16
17
  extensions: []
17
18
  extra_rdoc_files: []
18
19
  files:
19
- - lib/ds_algo.rb
20
+ - lib/data_struct/linked_list.rb
20
21
  homepage: https://rubygems.org/gems/ds_algo
21
22
  licenses:
22
23
  - MIT
@@ -39,5 +40,5 @@ requirements: []
39
40
  rubygems_version: 3.0.4
40
41
  signing_key:
41
42
  specification_version: 4
42
- summary: ruby gem for data structures and algorithms
43
+ summary: ruby gem for data structures and algorithms (under development)
43
44
  test_files: []
data/lib/ds_algo.rb DELETED
@@ -1,13 +0,0 @@
1
- class DsAlgo
2
- # Say hi to the world!
3
- #
4
- # Example:
5
- # >> DsAlgo.hi
6
- # => Hello world!
7
- #
8
- # Arguments:
9
- #
10
- def self.hi
11
- puts "Hello world!"
12
- end
13
- end