ds_algo 0.0.2 → 0.0.3

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