ds 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (117) hide show
  1. data/.gitignore +2 -0
  2. data/README.rdoc +490 -0
  3. data/Rakefile +1 -1
  4. data/lib/ds.rb +17 -19
  5. data/lib/ds/ext/array_x.rb +35 -0
  6. data/lib/ds/graphs/graph.rb +36 -32
  7. data/lib/ds/graphs/graph_as_matrix.rb +22 -23
  8. data/lib/ds/graphs/graph_as_tri_matrix.rb +1 -2
  9. data/lib/ds/lists/list.rb +18 -21
  10. data/lib/ds/matrixes/array_2d.rb +4 -0
  11. data/lib/ds/pair.rb +14 -0
  12. data/lib/ds/queues/priority_queue.rb +36 -0
  13. data/lib/ds/queues/queue.rb +1 -1
  14. data/lib/ds/sets/ordered_set.rb +32 -0
  15. data/lib/ds/trees/binary_heap.rb +45 -14
  16. data/lib/ds/trees/binary_search_tree.rb +3 -1
  17. data/lib/ds/trees/binary_tree.rb +11 -5
  18. data/lib/ds/trees/complete_binary_tree.rb +24 -16
  19. data/lib/ds/trees/tree.rb +3 -3
  20. data/lib/ds/trees/tree_walker.rb +7 -6
  21. data/lib/ds/trees/trie.rb +14 -20
  22. data/lib/ds/version.rb +1 -1
  23. data/test/help.rb +12 -3
  24. data/test/test_array2d.rb +14 -4
  25. data/test/test_array_x.rb +27 -7
  26. data/test/test_binary_heap.rb +19 -1
  27. data/test/test_binary_search_tree.rb +8 -1
  28. data/test/test_binary_tree.rb +7 -1
  29. data/test/test_complete_binary_tree.rb +34 -6
  30. data/test/test_digraph.rb +1 -1
  31. data/test/test_graph.rb +10 -1
  32. data/test/test_list.rb +59 -2
  33. data/test/test_ordered_set.rb +28 -0
  34. data/test/test_pair.rb +26 -0
  35. data/test/test_priority_queue.rb +134 -0
  36. data/test/test_queue.rb +3 -3
  37. data/test/test_stack.rb +0 -2
  38. data/test/test_tree.rb +32 -9
  39. data/test/test_tree_walker.rb +22 -0
  40. data/test/test_trie.rb +20 -2
  41. metadata +13 -81
  42. data/doc/Array.html +0 -264
  43. data/doc/DS.html +0 -292
  44. data/doc/DS/Array2D.html +0 -345
  45. data/doc/DS/BinaryHeap.html +0 -493
  46. data/doc/DS/BinarySearchTree.html +0 -313
  47. data/doc/DS/BinaryTree.html +0 -433
  48. data/doc/DS/CompleteBinaryTree.html +0 -550
  49. data/doc/DS/CyclicList.html +0 -234
  50. data/doc/DS/Digraph.html +0 -299
  51. data/doc/DS/Edge.html +0 -283
  52. data/doc/DS/ExpandableArray.html +0 -316
  53. data/doc/DS/Graph.html +0 -739
  54. data/doc/DS/GraphAsList.html +0 -361
  55. data/doc/DS/GraphAsMatrix.html +0 -633
  56. data/doc/DS/GraphAsTriMatrix.html +0 -274
  57. data/doc/DS/List.html +0 -1263
  58. data/doc/DS/ListElement.html +0 -344
  59. data/doc/DS/Queue.html +0 -517
  60. data/doc/DS/Ring.html +0 -323
  61. data/doc/DS/Stack.html +0 -407
  62. data/doc/DS/Tree.html +0 -770
  63. data/doc/DS/TreeWalker.html +0 -561
  64. data/doc/DS/TriMatrix.html +0 -338
  65. data/doc/created.rid +0 -25
  66. data/doc/ds/graphs/digraph_rb.html +0 -52
  67. data/doc/ds/graphs/edge_rb.html +0 -52
  68. data/doc/ds/graphs/graph_as_list_rb.html +0 -52
  69. data/doc/ds/graphs/graph_as_matrix_rb.html +0 -52
  70. data/doc/ds/graphs/graph_as_tri_matrix_rb.html +0 -52
  71. data/doc/ds/graphs/graph_rb.html +0 -52
  72. data/doc/ds/lists/cyclic_list_rb.html +0 -52
  73. data/doc/ds/lists/list_element_rb.html +0 -52
  74. data/doc/ds/lists/list_rb.html +0 -52
  75. data/doc/ds/lists/ring_rb.html +0 -52
  76. data/doc/ds/matrixes/array_2d_rb.html +0 -52
  77. data/doc/ds/matrixes/expandable_array_rb.html +0 -52
  78. data/doc/ds/matrixes/tri_matrix_rb.html +0 -52
  79. data/doc/ds/queues/queue_rb.html +0 -52
  80. data/doc/ds/stacks/stack_rb.html +0 -52
  81. data/doc/ds/trees/binary_heap_rb.html +0 -52
  82. data/doc/ds/trees/binary_search_tree_rb.html +0 -52
  83. data/doc/ds/trees/binary_tree_rb.html +0 -52
  84. data/doc/ds/trees/complete_binary_tree_rb.html +0 -52
  85. data/doc/ds/trees/tree_rb.html +0 -52
  86. data/doc/ds/trees/tree_walker_rb.html +0 -52
  87. data/doc/ds/version_rb.html +0 -52
  88. data/doc/ds_rb.html +0 -98
  89. data/doc/ext/ext_rb.html +0 -52
  90. data/doc/images/brick.png +0 -0
  91. data/doc/images/brick_link.png +0 -0
  92. data/doc/images/bug.png +0 -0
  93. data/doc/images/bullet_black.png +0 -0
  94. data/doc/images/bullet_toggle_minus.png +0 -0
  95. data/doc/images/bullet_toggle_plus.png +0 -0
  96. data/doc/images/date.png +0 -0
  97. data/doc/images/find.png +0 -0
  98. data/doc/images/loadingAnimation.gif +0 -0
  99. data/doc/images/macFFBgHack.png +0 -0
  100. data/doc/images/package.png +0 -0
  101. data/doc/images/page_green.png +0 -0
  102. data/doc/images/page_white_text.png +0 -0
  103. data/doc/images/page_white_width.png +0 -0
  104. data/doc/images/plugin.png +0 -0
  105. data/doc/images/ruby.png +0 -0
  106. data/doc/images/tag_green.png +0 -0
  107. data/doc/images/wrench.png +0 -0
  108. data/doc/images/wrench_orange.png +0 -0
  109. data/doc/images/zoom.png +0 -0
  110. data/doc/index.html +0 -375
  111. data/doc/js/darkfish.js +0 -116
  112. data/doc/js/jquery.js +0 -32
  113. data/doc/js/quicksearch.js +0 -114
  114. data/doc/js/thickbox-compressed.js +0 -10
  115. data/doc/rdoc.css +0 -763
  116. data/lib/ds/ext/ext.rb +0 -36
  117. data/lib/ds/graphs/graph_as_list.rb +0 -48
@@ -1,274 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
- <head>
6
- <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
7
-
8
- <title>Class: DS::GraphAsTriMatrix</title>
9
-
10
- <link rel="stylesheet" href="../rdoc.css" type="text/css" media="screen" />
11
-
12
- <script src="../js/jquery.js" type="text/javascript" charset="utf-8"></script>
13
- <script src="../js/thickbox-compressed.js" type="text/javascript" charset="utf-8"></script>
14
- <script src="../js/quicksearch.js" type="text/javascript" charset="utf-8"></script>
15
- <script src="../js/darkfish.js" type="text/javascript" charset="utf-8"></script>
16
-
17
- </head>
18
- <body id="top" class="class">
19
-
20
- <div id="metadata">
21
- <div id="home-metadata">
22
- <div id="home-section" class="section">
23
- <h3 class="section-header">
24
- <a href="../index.html">Home</a>
25
- <a href="../index.html#classes">Classes</a>
26
- <a href="../index.html#methods">Methods</a>
27
- </h3>
28
- </div>
29
- </div>
30
-
31
- <div id="file-metadata">
32
- <div id="file-list-section" class="section">
33
- <h3 class="section-header">In Files</h3>
34
- <div class="section-body">
35
- <ul>
36
-
37
- <li><a href="../ds/graphs/graph_as_tri_matrix_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
38
- class="thickbox" title="ds/graphs/graph_as_tri_matrix.rb">ds/graphs/graph_as_tri_matrix.rb</a></li>
39
-
40
- </ul>
41
- </div>
42
- </div>
43
-
44
-
45
- </div>
46
-
47
- <div id="class-metadata">
48
-
49
- <!-- Parent Class -->
50
- <div id="parent-class-section" class="section">
51
- <h3 class="section-header">Parent</h3>
52
-
53
- <p class="link"><a href="GraphAsMatrix.html">DS::GraphAsMatrix</a></p>
54
-
55
- </div>
56
-
57
-
58
-
59
-
60
-
61
-
62
-
63
- <!-- Method Quickref -->
64
- <div id="method-list-section" class="section">
65
- <h3 class="section-header">Methods</h3>
66
- <ul class="link-list">
67
-
68
- <li><a href="#method-c-new">::new</a></li>
69
-
70
- <li><a href="#method-i-degree">#degree</a></li>
71
-
72
- </ul>
73
- </div>
74
-
75
-
76
-
77
- </div>
78
-
79
- <div id="project-metadata">
80
-
81
-
82
-
83
- <div id="classindex-section" class="section project-section">
84
- <h3 class="section-header">Class/Module Index
85
- <span class="search-toggle"><img src="../images/find.png"
86
- height="16" width="16" alt="[+]"
87
- title="show/hide quicksearch" /></span></h3>
88
- <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
89
- <fieldset>
90
- <legend>Quicksearch</legend>
91
- <input type="text" name="quicksearch" value=""
92
- class="quicksearch-field" />
93
- </fieldset>
94
- </form>
95
-
96
- <ul class="link-list">
97
-
98
- <li><a href="../DS.html">DS</a></li>
99
-
100
- <li><a href="../DS/Array2D.html">DS::Array2D</a></li>
101
-
102
- <li><a href="../DS/BinaryHeap.html">DS::BinaryHeap</a></li>
103
-
104
- <li><a href="../DS/BinarySearchTree.html">DS::BinarySearchTree</a></li>
105
-
106
- <li><a href="../DS/BinaryTree.html">DS::BinaryTree</a></li>
107
-
108
- <li><a href="../DS/CompleteBinaryTree.html">DS::CompleteBinaryTree</a></li>
109
-
110
- <li><a href="../DS/CyclicList.html">DS::CyclicList</a></li>
111
-
112
- <li><a href="../DS/Digraph.html">DS::Digraph</a></li>
113
-
114
- <li><a href="../DS/Edge.html">DS::Edge</a></li>
115
-
116
- <li><a href="../DS/ExpandableArray.html">DS::ExpandableArray</a></li>
117
-
118
- <li><a href="../DS/Graph.html">DS::Graph</a></li>
119
-
120
- <li><a href="../DS/GraphAsList.html">DS::GraphAsList</a></li>
121
-
122
- <li><a href="../DS/GraphAsMatrix.html">DS::GraphAsMatrix</a></li>
123
-
124
- <li><a href="../DS/GraphAsTriMatrix.html">DS::GraphAsTriMatrix</a></li>
125
-
126
- <li><a href="../DS/List.html">DS::List</a></li>
127
-
128
- <li><a href="../DS/ListElement.html">DS::ListElement</a></li>
129
-
130
- <li><a href="../DS/Queue.html">DS::Queue</a></li>
131
-
132
- <li><a href="../DS/Ring.html">DS::Ring</a></li>
133
-
134
- <li><a href="../DS/Stack.html">DS::Stack</a></li>
135
-
136
- <li><a href="../DS/Tree.html">DS::Tree</a></li>
137
-
138
- <li><a href="../DS/TreeWalker.html">DS::TreeWalker</a></li>
139
-
140
- <li><a href="../DS/TriMatrix.html">DS::TriMatrix</a></li>
141
-
142
- <li><a href="../Array.html">Array</a></li>
143
-
144
- </ul>
145
- <div id="no-class-search-results" style="display: none;">No matching classes.</div>
146
- </div>
147
-
148
-
149
- </div>
150
- </div>
151
-
152
- <div id="documentation">
153
- <h1 class="class">DS::GraphAsTriMatrix</h1>
154
-
155
- <div id="description" class="description">
156
-
157
- </div><!-- description -->
158
-
159
-
160
-
161
-
162
- <div id="5Buntitled-5D" class="documentation-section">
163
-
164
-
165
-
166
-
167
-
168
-
169
-
170
-
171
- <!-- Methods -->
172
-
173
- <div id="public-class-method-details" class="method-section section">
174
- <h3 class="section-header">Public Class Methods</h3>
175
-
176
-
177
- <div id="new-method" class="method-detail ">
178
- <a name="method-c-new"></a>
179
-
180
-
181
- <div class="method-heading">
182
- <span class="method-name">new</span><span
183
- class="method-args">(edges)</span>
184
- <span class="method-click-advice">click to toggle source</span>
185
- </div>
186
-
187
-
188
- <div class="method-description">
189
-
190
-
191
-
192
-
193
-
194
- <div class="method-source-code" id="new-source">
195
- <pre>
196
- <span class="ruby-comment"># File ds/graphs/graph_as_tri_matrix.rb, line 4</span>
197
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">edges</span>)
198
- <span class="ruby-ivar">@store</span> = <span class="ruby-constant">TriMatrix</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value">0</span>)
199
- <span class="ruby-ivar">@max</span> = <span class="ruby-value">0</span>
200
- <span class="ruby-ivar">@map</span> = []
201
- <span class="ruby-ivar">@v</span> = <span class="ruby-value">0</span>
202
-
203
- <span class="ruby-identifier">add_edges</span>(<span class="ruby-identifier">edges</span>)
204
- <span class="ruby-keyword">end</span></pre>
205
- </div><!-- new-source -->
206
-
207
- </div>
208
-
209
-
210
-
211
-
212
- </div><!-- new-method -->
213
-
214
-
215
- </div><!-- public-class-method-details -->
216
-
217
- <div id="public-instance-method-details" class="method-section section">
218
- <h3 class="section-header">Public Instance Methods</h3>
219
-
220
-
221
- <div id="degree-method" class="method-detail ">
222
- <a name="method-i-degree"></a>
223
-
224
-
225
- <div class="method-heading">
226
- <span class="method-name">degree</span><span
227
- class="method-args">(x)</span>
228
- <span class="method-click-advice">click to toggle source</span>
229
- </div>
230
-
231
-
232
- <div class="method-description">
233
-
234
- <p>Returns vertex degree.</p>
235
-
236
-
237
-
238
- <div class="method-source-code" id="degree-source">
239
- <pre>
240
- <span class="ruby-comment"># File ds/graphs/graph_as_tri_matrix.rb, line 14</span>
241
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">degree</span>(<span class="ruby-identifier">x</span>)
242
- <span class="ruby-identifier">x</span> = <span class="ruby-ivar">@map</span>.<span class="ruby-identifier">index</span>(<span class="ruby-identifier">x</span>)
243
- <span class="ruby-identifier">sum</span> = <span class="ruby-value">0</span>
244
- <span class="ruby-value">0</span>.<span class="ruby-identifier">upto</span> <span class="ruby-ivar">@max</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
245
- <span class="ruby-identifier">sum</span> <span class="ruby-operator">+=</span> <span class="ruby-ivar">@store</span>[<span class="ruby-identifier">x</span>,<span class="ruby-identifier">i</span>] <span class="ruby-keyword">if</span> <span class="ruby-ivar">@store</span>[<span class="ruby-identifier">x</span>,<span class="ruby-identifier">i</span>]
246
- <span class="ruby-keyword">end</span>
247
- <span class="ruby-identifier">sum</span>
248
- <span class="ruby-keyword">end</span></pre>
249
- </div><!-- degree-source -->
250
-
251
- </div>
252
-
253
-
254
-
255
-
256
- </div><!-- degree-method -->
257
-
258
-
259
- </div><!-- public-instance-method-details -->
260
-
261
- </div><!-- 5Buntitled-5D -->
262
-
263
-
264
- </div><!-- documentation -->
265
-
266
- <div id="validator-badges">
267
- <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
268
- <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
269
- Rdoc Generator</a> 2</small>.</p>
270
- </div>
271
-
272
- </body>
273
- </html>
274
-
@@ -1,1263 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
- <head>
6
- <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
7
-
8
- <title>Class: DS::List</title>
9
-
10
- <link rel="stylesheet" href="../rdoc.css" type="text/css" media="screen" />
11
-
12
- <script src="../js/jquery.js" type="text/javascript" charset="utf-8"></script>
13
- <script src="../js/thickbox-compressed.js" type="text/javascript" charset="utf-8"></script>
14
- <script src="../js/quicksearch.js" type="text/javascript" charset="utf-8"></script>
15
- <script src="../js/darkfish.js" type="text/javascript" charset="utf-8"></script>
16
-
17
- </head>
18
- <body id="top" class="class">
19
-
20
- <div id="metadata">
21
- <div id="home-metadata">
22
- <div id="home-section" class="section">
23
- <h3 class="section-header">
24
- <a href="../index.html">Home</a>
25
- <a href="../index.html#classes">Classes</a>
26
- <a href="../index.html#methods">Methods</a>
27
- </h3>
28
- </div>
29
- </div>
30
-
31
- <div id="file-metadata">
32
- <div id="file-list-section" class="section">
33
- <h3 class="section-header">In Files</h3>
34
- <div class="section-body">
35
- <ul>
36
-
37
- <li><a href="../ds/lists/list_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
38
- class="thickbox" title="ds/lists/list.rb">ds/lists/list.rb</a></li>
39
-
40
- </ul>
41
- </div>
42
- </div>
43
-
44
-
45
- </div>
46
-
47
- <div id="class-metadata">
48
-
49
- <!-- Parent Class -->
50
- <div id="parent-class-section" class="section">
51
- <h3 class="section-header">Parent</h3>
52
-
53
- <p class="link">Object</p>
54
-
55
- </div>
56
-
57
-
58
-
59
-
60
-
61
-
62
-
63
- <!-- Method Quickref -->
64
- <div id="method-list-section" class="section">
65
- <h3 class="section-header">Methods</h3>
66
- <ul class="link-list">
67
-
68
- <li><a href="#method-c-from_array">::from_array</a></li>
69
-
70
- <li><a href="#method-c-new">::new</a></li>
71
-
72
- <li><a href="#method-i-3C-3C">#<<</a></li>
73
-
74
- <li><a href="#method-i-append">#append</a></li>
75
-
76
- <li><a href="#method-i-each">#each</a></li>
77
-
78
- <li><a href="#method-i-each_with_index">#each_with_index</a></li>
79
-
80
- <li><a href="#method-i-empty-3F">#empty?</a></li>
81
-
82
- <li><a href="#method-i-first">#first</a></li>
83
-
84
- <li><a href="#method-i-insert_after">#insert_after</a></li>
85
-
86
- <li><a href="#method-i-insert_before">#insert_before</a></li>
87
-
88
- <li><a href="#method-i-joint">#joint</a></li>
89
-
90
- <li><a href="#method-i-last">#last</a></li>
91
-
92
- <li><a href="#method-i-length">#length</a></li>
93
-
94
- <li><a href="#method-i-looped-3F">#looped?</a></li>
95
-
96
- <li><a href="#method-i-merge">#merge</a></li>
97
-
98
- <li><a href="#method-i-orderize">#orderize</a></li>
99
-
100
- <li><a href="#method-i-prepend">#prepend</a></li>
101
-
102
- <li><a href="#method-i-print">#print</a></li>
103
-
104
- <li><a href="#method-i-remove">#remove</a></li>
105
-
106
- <li><a href="#method-i-remove-21">#remove!</a></li>
107
-
108
- <li><a href="#method-i-reverse-21">#reverse!</a></li>
109
-
110
- <li><a href="#method-i-shift">#shift</a></li>
111
-
112
- <li><a href="#method-i-to_a">#to_a</a></li>
113
-
114
- <li><a href="#method-i-zip-3F">#zip?</a></li>
115
-
116
- </ul>
117
- </div>
118
-
119
-
120
-
121
- <!-- Included Modules -->
122
- <div id="includes-section" class="section">
123
- <h3 class="section-header">Included Modules</h3>
124
- <ul class="link-list">
125
-
126
-
127
- <li><span class="include">Enumerable</span></li>
128
-
129
-
130
- </ul>
131
- </div>
132
-
133
- </div>
134
-
135
- <div id="project-metadata">
136
-
137
-
138
-
139
- <div id="classindex-section" class="section project-section">
140
- <h3 class="section-header">Class/Module Index
141
- <span class="search-toggle"><img src="../images/find.png"
142
- height="16" width="16" alt="[+]"
143
- title="show/hide quicksearch" /></span></h3>
144
- <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
145
- <fieldset>
146
- <legend>Quicksearch</legend>
147
- <input type="text" name="quicksearch" value=""
148
- class="quicksearch-field" />
149
- </fieldset>
150
- </form>
151
-
152
- <ul class="link-list">
153
-
154
- <li><a href="../DS.html">DS</a></li>
155
-
156
- <li><a href="../DS/Array2D.html">DS::Array2D</a></li>
157
-
158
- <li><a href="../DS/BinaryHeap.html">DS::BinaryHeap</a></li>
159
-
160
- <li><a href="../DS/BinarySearchTree.html">DS::BinarySearchTree</a></li>
161
-
162
- <li><a href="../DS/BinaryTree.html">DS::BinaryTree</a></li>
163
-
164
- <li><a href="../DS/CompleteBinaryTree.html">DS::CompleteBinaryTree</a></li>
165
-
166
- <li><a href="../DS/CyclicList.html">DS::CyclicList</a></li>
167
-
168
- <li><a href="../DS/Digraph.html">DS::Digraph</a></li>
169
-
170
- <li><a href="../DS/Edge.html">DS::Edge</a></li>
171
-
172
- <li><a href="../DS/ExpandableArray.html">DS::ExpandableArray</a></li>
173
-
174
- <li><a href="../DS/Graph.html">DS::Graph</a></li>
175
-
176
- <li><a href="../DS/GraphAsList.html">DS::GraphAsList</a></li>
177
-
178
- <li><a href="../DS/GraphAsMatrix.html">DS::GraphAsMatrix</a></li>
179
-
180
- <li><a href="../DS/GraphAsTriMatrix.html">DS::GraphAsTriMatrix</a></li>
181
-
182
- <li><a href="../DS/List.html">DS::List</a></li>
183
-
184
- <li><a href="../DS/ListElement.html">DS::ListElement</a></li>
185
-
186
- <li><a href="../DS/Queue.html">DS::Queue</a></li>
187
-
188
- <li><a href="../DS/Ring.html">DS::Ring</a></li>
189
-
190
- <li><a href="../DS/Stack.html">DS::Stack</a></li>
191
-
192
- <li><a href="../DS/Tree.html">DS::Tree</a></li>
193
-
194
- <li><a href="../DS/TreeWalker.html">DS::TreeWalker</a></li>
195
-
196
- <li><a href="../DS/TriMatrix.html">DS::TriMatrix</a></li>
197
-
198
- <li><a href="../Array.html">Array</a></li>
199
-
200
- </ul>
201
- <div id="no-class-search-results" style="display: none;">No matching classes.</div>
202
- </div>
203
-
204
-
205
- </div>
206
- </div>
207
-
208
- <div id="documentation">
209
- <h1 class="class">DS::List</h1>
210
-
211
- <div id="description" class="description">
212
-
213
- <p>Implements simple list data structure.</p>
214
-
215
- </div><!-- description -->
216
-
217
-
218
-
219
-
220
- <div id="5Buntitled-5D" class="documentation-section">
221
-
222
-
223
-
224
-
225
-
226
-
227
-
228
- <!-- Attributes -->
229
- <div id="attribute-method-details" class="method-section section">
230
- <h3 class="section-header">Attributes</h3>
231
-
232
-
233
- <div id="head-attribute-method" class="method-detail">
234
- <a name="head"></a>
235
-
236
- <a name="head="></a>
237
-
238
- <div class="method-heading attribute-method-heading">
239
- <span class="method-name">head</span><span
240
- class="attribute-access-type">[RW]</span>
241
- </div>
242
-
243
- <div class="method-description">
244
-
245
-
246
-
247
- </div>
248
- </div>
249
-
250
- <div id="tail-attribute-method" class="method-detail">
251
- <a name="tail"></a>
252
-
253
- <a name="tail="></a>
254
-
255
- <div class="method-heading attribute-method-heading">
256
- <span class="method-name">tail</span><span
257
- class="attribute-access-type">[RW]</span>
258
- </div>
259
-
260
- <div class="method-description">
261
-
262
-
263
-
264
- </div>
265
- </div>
266
-
267
- </div><!-- attribute-method-details -->
268
-
269
-
270
- <!-- Methods -->
271
-
272
- <div id="public-class-method-details" class="method-section section">
273
- <h3 class="section-header">Public Class Methods</h3>
274
-
275
-
276
- <div id="from_array-method" class="method-detail ">
277
- <a name="method-c-from_array"></a>
278
-
279
-
280
- <div class="method-heading">
281
- <span class="method-name">from_array</span><span
282
- class="method-args">(arr)</span>
283
- <span class="method-click-advice">click to toggle source</span>
284
- </div>
285
-
286
-
287
- <div class="method-description">
288
-
289
- <p>Creates list from array.</p>
290
-
291
-
292
-
293
- <div class="method-source-code" id="from_array-source">
294
- <pre>
295
- <span class="ruby-comment"># File ds/lists/list.rb, line 17</span>
296
- <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">from_array</span>(<span class="ruby-identifier">arr</span>)
297
- <span class="ruby-identifier">list</span> = <span class="ruby-identifier">new</span>(<span class="ruby-identifier">arr</span>.<span class="ruby-identifier">shift</span>)
298
- <span class="ruby-identifier">tail</span> = <span class="ruby-identifier">list</span>.<span class="ruby-identifier">head</span>
299
- <span class="ruby-identifier">arr</span>.<span class="ruby-identifier">each</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">e</span><span class="ruby-operator">|</span> <span class="ruby-identifier">tail</span> = <span class="ruby-identifier">tail</span>.<span class="ruby-identifier">append</span>(<span class="ruby-identifier">e</span>) }
300
- <span class="ruby-identifier">list</span>.<span class="ruby-identifier">tail</span> = <span class="ruby-identifier">tail</span>
301
- <span class="ruby-identifier">list</span>
302
- <span class="ruby-keyword">end</span></pre>
303
- </div><!-- from_array-source -->
304
-
305
- </div>
306
-
307
-
308
-
309
-
310
- </div><!-- from_array-method -->
311
-
312
-
313
- <div id="new-method" class="method-detail ">
314
- <a name="method-c-new"></a>
315
-
316
-
317
- <div class="method-heading">
318
- <span class="method-name">new</span><span
319
- class="method-args">(x=nil)</span>
320
- <span class="method-click-advice">click to toggle source</span>
321
- </div>
322
-
323
-
324
- <div class="method-description">
325
-
326
- <p>Creates new list.</p>
327
-
328
-
329
-
330
- <div class="method-source-code" id="new-source">
331
- <pre>
332
- <span class="ruby-comment"># File ds/lists/list.rb, line 11</span>
333
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">x</span>=<span class="ruby-keyword">nil</span>)
334
- <span class="ruby-ivar">@head</span> = <span class="ruby-constant">ListElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">x</span>)
335
- <span class="ruby-ivar">@tail</span> = <span class="ruby-ivar">@head</span>
336
- <span class="ruby-keyword">end</span></pre>
337
- </div><!-- new-source -->
338
-
339
- </div>
340
-
341
-
342
-
343
-
344
- </div><!-- new-method -->
345
-
346
-
347
- </div><!-- public-class-method-details -->
348
-
349
- <div id="public-instance-method-details" class="method-section section">
350
- <h3 class="section-header">Public Instance Methods</h3>
351
-
352
-
353
- <div id="3C-3C-method" class="method-detail method-alias">
354
- <a name="method-i-3C-3C"></a>
355
-
356
-
357
- <div class="method-heading">
358
- <span class="method-name">&lt;&lt;</span><span
359
- class="method-args">(x)</span>
360
- <span class="method-click-advice">click to toggle source</span>
361
- </div>
362
-
363
-
364
- <div class="method-description">
365
-
366
-
367
-
368
-
369
-
370
- </div>
371
-
372
-
373
-
374
-
375
- <div class="aliases">
376
- Alias for: <a href="List.html#method-i-append">append</a>
377
- </div>
378
-
379
- </div><!-- 3C-3C-method -->
380
-
381
-
382
- <div id="append-method" class="method-detail ">
383
- <a name="method-i-append"></a>
384
-
385
-
386
- <div class="method-heading">
387
- <span class="method-name">append</span><span
388
- class="method-args">(x)</span>
389
- <span class="method-click-advice">click to toggle source</span>
390
- </div>
391
-
392
-
393
- <div class="method-description">
394
-
395
- <p>Appends new element to list.</p>
396
-
397
-
398
-
399
- <div class="method-source-code" id="append-source">
400
- <pre>
401
- <span class="ruby-comment"># File ds/lists/list.rb, line 26</span>
402
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">append</span>(<span class="ruby-identifier">x</span>)
403
- <span class="ruby-identifier">last_elem</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">tail</span>
404
- <span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">empty?</span>
405
- <span class="ruby-ivar">@tail</span> = <span class="ruby-identifier">last_elem</span>.<span class="ruby-identifier">append</span>(<span class="ruby-identifier">x</span>)
406
- <span class="ruby-keyword">else</span>
407
- <span class="ruby-ivar">@head</span> = <span class="ruby-constant">ListElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">x</span>)
408
- <span class="ruby-ivar">@tail</span> = <span class="ruby-ivar">@head</span>
409
- <span class="ruby-keyword">end</span>
410
- <span class="ruby-keyword">end</span></pre>
411
- </div><!-- append-source -->
412
-
413
- </div>
414
-
415
-
416
- <div class="aliases">
417
- Also aliased as: <a href="List.html#method-i-3C-3C">&lt;&lt;</a>
418
- </div>
419
-
420
-
421
-
422
- </div><!-- append-method -->
423
-
424
-
425
- <div id="each-method" class="method-detail ">
426
- <a name="method-i-each"></a>
427
-
428
-
429
- <div class="method-heading">
430
- <span class="method-name">each</span><span
431
- class="method-args">()</span>
432
- <span class="method-click-advice">click to toggle source</span>
433
- </div>
434
-
435
-
436
- <div class="method-description">
437
-
438
- <p>Default list iterator.</p>
439
-
440
-
441
-
442
- <div class="method-source-code" id="each-source">
443
- <pre>
444
- <span class="ruby-comment"># File ds/lists/list.rb, line 284</span>
445
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">each</span>
446
- <span class="ruby-identifier">elem</span> = <span class="ruby-ivar">@head</span>
447
- <span class="ruby-keyword">while</span> <span class="ruby-identifier">elem</span>
448
- <span class="ruby-keyword">yield</span> <span class="ruby-identifier">elem</span>.<span class="ruby-identifier">data</span>
449
- <span class="ruby-identifier">elem</span> = <span class="ruby-identifier">elem</span>.<span class="ruby-identifier">next</span>
450
- <span class="ruby-keyword">end</span>
451
- <span class="ruby-keyword">end</span></pre>
452
- </div><!-- each-source -->
453
-
454
- </div>
455
-
456
-
457
-
458
-
459
- </div><!-- each-method -->
460
-
461
-
462
- <div id="each_with_index-method" class="method-detail ">
463
- <a name="method-i-each_with_index"></a>
464
-
465
-
466
- <div class="method-heading">
467
- <span class="method-name">each_with_index</span><span
468
- class="method-args">()</span>
469
- <span class="method-click-advice">click to toggle source</span>
470
- </div>
471
-
472
-
473
- <div class="method-description">
474
-
475
-
476
-
477
-
478
-
479
- <div class="method-source-code" id="each_with_index-source">
480
- <pre>
481
- <span class="ruby-comment"># File ds/lists/list.rb, line 292</span>
482
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">each_with_index</span>
483
- <span class="ruby-identifier">elem</span> = <span class="ruby-ivar">@head</span>
484
- <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
485
- <span class="ruby-keyword">while</span> <span class="ruby-identifier">elem</span>
486
- <span class="ruby-keyword">yield</span> <span class="ruby-identifier">elem</span>,<span class="ruby-identifier">i</span>
487
- <span class="ruby-identifier">elem</span> = <span class="ruby-identifier">elem</span>.<span class="ruby-identifier">next</span>
488
- <span class="ruby-identifier">i</span> = <span class="ruby-identifier">i</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
489
- <span class="ruby-keyword">end</span>
490
- <span class="ruby-keyword">end</span></pre>
491
- </div><!-- each_with_index-source -->
492
-
493
- </div>
494
-
495
-
496
-
497
-
498
- </div><!-- each_with_index-method -->
499
-
500
-
501
- <div id="empty-3F-method" class="method-detail ">
502
- <a name="method-i-empty-3F"></a>
503
-
504
-
505
- <div class="method-heading">
506
- <span class="method-name">empty?</span><span
507
- class="method-args">()</span>
508
- <span class="method-click-advice">click to toggle source</span>
509
- </div>
510
-
511
-
512
- <div class="method-description">
513
-
514
- <p>Checks if list is empty.</p>
515
-
516
-
517
-
518
- <div class="method-source-code" id="empty-3F-source">
519
- <pre>
520
- <span class="ruby-comment"># File ds/lists/list.rb, line 119</span>
521
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">empty?</span>
522
- <span class="ruby-identifier">head</span>.<span class="ruby-identifier">data</span>.<span class="ruby-identifier">nil?</span>
523
- <span class="ruby-keyword">end</span></pre>
524
- </div><!-- empty-3F-source -->
525
-
526
- </div>
527
-
528
-
529
-
530
-
531
- </div><!-- empty-3F-method -->
532
-
533
-
534
- <div id="first-method" class="method-detail ">
535
- <a name="method-i-first"></a>
536
-
537
-
538
- <div class="method-heading">
539
- <span class="method-name">first</span><span
540
- class="method-args">()</span>
541
- <span class="method-click-advice">click to toggle source</span>
542
- </div>
543
-
544
-
545
- <div class="method-description">
546
-
547
-
548
-
549
-
550
-
551
- <div class="method-source-code" id="first-source">
552
- <pre>
553
- <span class="ruby-comment"># File ds/lists/list.rb, line 128</span>
554
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">first</span>
555
- <span class="ruby-identifier">head</span>.<span class="ruby-identifier">data</span>
556
- <span class="ruby-keyword">end</span></pre>
557
- </div><!-- first-source -->
558
-
559
- </div>
560
-
561
-
562
-
563
-
564
- </div><!-- first-method -->
565
-
566
-
567
- <div id="insert_after-method" class="method-detail ">
568
- <a name="method-i-insert_after"></a>
569
-
570
-
571
- <div class="method-heading">
572
- <span class="method-name">insert_after</span><span
573
- class="method-args">(x,rel)</span>
574
- <span class="method-click-advice">click to toggle source</span>
575
- </div>
576
-
577
-
578
- <div class="method-description">
579
-
580
- <p>Inserts element x after another element.</p>
581
-
582
-
583
-
584
- <div class="method-source-code" id="insert_after-source">
585
- <pre>
586
- <span class="ruby-comment"># File ds/lists/list.rb, line 72</span>
587
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">insert_after</span>(<span class="ruby-identifier">x</span>,<span class="ruby-identifier">rel</span>)
588
- <span class="ruby-identifier">x</span> = <span class="ruby-constant">ListElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">x</span>)
589
-
590
- <span class="ruby-identifier">el</span> = <span class="ruby-identifier">head</span>
591
- <span class="ruby-keyword">while</span> <span class="ruby-identifier">el</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">el</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">rel</span>
592
- <span class="ruby-identifier">el</span> = <span class="ruby-identifier">el</span>.<span class="ruby-identifier">next</span>
593
- <span class="ruby-keyword">end</span>
594
-
595
- <span class="ruby-identifier">raise</span> <span class="ruby-string">&quot;Element not found&quot;</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">el</span>
596
-
597
- <span class="ruby-identifier">x</span>.<span class="ruby-identifier">next</span> = <span class="ruby-identifier">el</span>.<span class="ruby-identifier">next</span>
598
- <span class="ruby-identifier">el</span>.<span class="ruby-identifier">next</span> = <span class="ruby-identifier">x</span>
599
-
600
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">tail?</span>
601
- <span class="ruby-keyword">self</span>.<span class="ruby-identifier">tail</span> = <span class="ruby-identifier">x</span>
602
- <span class="ruby-keyword">end</span>
603
- <span class="ruby-keyword">end</span></pre>
604
- </div><!-- insert_after-source -->
605
-
606
- </div>
607
-
608
-
609
-
610
-
611
- </div><!-- insert_after-method -->
612
-
613
-
614
- <div id="insert_before-method" class="method-detail ">
615
- <a name="method-i-insert_before"></a>
616
-
617
-
618
- <div class="method-heading">
619
- <span class="method-name">insert_before</span><span
620
- class="method-args">(x,rel)</span>
621
- <span class="method-click-advice">click to toggle source</span>
622
- </div>
623
-
624
-
625
- <div class="method-description">
626
-
627
- <p>Inserts element x before another element.</p>
628
-
629
-
630
-
631
- <div class="method-source-code" id="insert_before-source">
632
- <pre>
633
- <span class="ruby-comment"># File ds/lists/list.rb, line 91</span>
634
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">insert_before</span>(<span class="ruby-identifier">x</span>,<span class="ruby-identifier">rel</span>)
635
- <span class="ruby-identifier">x</span> = <span class="ruby-constant">ListElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">x</span>)
636
-
637
- <span class="ruby-comment">#inserting at the beginnig of the list </span>
638
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">rel</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">head</span>
639
- <span class="ruby-identifier">x</span>.<span class="ruby-identifier">next</span> = <span class="ruby-identifier">head</span>
640
- <span class="ruby-keyword">self</span>.<span class="ruby-identifier">head</span> = <span class="ruby-identifier">x</span>
641
-
642
- <span class="ruby-comment">#inserting in the tail of the list</span>
643
- <span class="ruby-keyword">else</span>
644
- <span class="ruby-identifier">el</span> = <span class="ruby-identifier">head</span>
645
- <span class="ruby-identifier">prev</span> = <span class="ruby-identifier">head</span>
646
- <span class="ruby-keyword">while</span> <span class="ruby-identifier">el</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">el</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">rel</span>
647
- <span class="ruby-identifier">prev</span> = <span class="ruby-identifier">el</span>
648
- <span class="ruby-identifier">el</span> = <span class="ruby-identifier">el</span>.<span class="ruby-identifier">next</span>
649
- <span class="ruby-keyword">end</span>
650
-
651
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">el</span>.<span class="ruby-identifier">nil?</span>
652
- <span class="ruby-identifier">raise</span> <span class="ruby-string">&quot;List element not found&quot;</span>
653
- <span class="ruby-keyword">else</span>
654
- <span class="ruby-identifier">prev</span>.<span class="ruby-identifier">next</span> = <span class="ruby-identifier">x</span>
655
- <span class="ruby-identifier">x</span>.<span class="ruby-identifier">next</span> = <span class="ruby-identifier">el</span>
656
- <span class="ruby-keyword">end</span>
657
- <span class="ruby-keyword">end</span>
658
- <span class="ruby-keyword">end</span></pre>
659
- </div><!-- insert_before-source -->
660
-
661
- </div>
662
-
663
-
664
-
665
-
666
- </div><!-- insert_before-method -->
667
-
668
-
669
- <div id="joint-method" class="method-detail ">
670
- <a name="method-i-joint"></a>
671
-
672
-
673
- <div class="method-heading">
674
- <span class="method-name">joint</span><span
675
- class="method-args">()</span>
676
- <span class="method-click-advice">click to toggle source</span>
677
- </div>
678
-
679
-
680
- <div class="method-description">
681
-
682
- <p>Returns joint element if exists, otherwise returns nil.</p>
683
-
684
-
685
-
686
- <div class="method-source-code" id="joint-source">
687
- <pre>
688
- <span class="ruby-comment"># File ds/lists/list.rb, line 143</span>
689
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">joint</span>
690
- <span class="ruby-identifier">elem</span> = <span class="ruby-identifier">head</span>
691
- <span class="ruby-identifier">elem2</span> = <span class="ruby-identifier">elem</span>.<span class="ruby-identifier">next</span>
692
-
693
- <span class="ruby-keyword">while</span> <span class="ruby-identifier">elem</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">elem2</span>
694
-
695
- <span class="ruby-comment">#traversing by 1</span>
696
- <span class="ruby-identifier">elem</span> = <span class="ruby-identifier">elem</span>.<span class="ruby-identifier">next</span>
697
-
698
- <span class="ruby-comment">#traversing by 2</span>
699
- <span class="ruby-identifier">elem2</span> = <span class="ruby-identifier">elem2</span>.<span class="ruby-identifier">next</span>
700
- <span class="ruby-identifier">elem2</span> = <span class="ruby-identifier">elem2</span>.<span class="ruby-identifier">next</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">elem2</span>
701
-
702
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">elem2</span>.<span class="ruby-identifier">equal?</span> <span class="ruby-identifier">elem</span>
703
- <span class="ruby-keyword">return</span> <span class="ruby-identifier">elem</span>
704
- <span class="ruby-keyword">end</span>
705
- <span class="ruby-keyword">end</span>
706
-
707
- <span class="ruby-keyword">nil</span>
708
- <span class="ruby-keyword">end</span></pre>
709
- </div><!-- joint-source -->
710
-
711
- </div>
712
-
713
-
714
-
715
-
716
- </div><!-- joint-method -->
717
-
718
-
719
- <div id="last-method" class="method-detail ">
720
- <a name="method-i-last"></a>
721
-
722
-
723
- <div class="method-heading">
724
- <span class="method-name">last</span><span
725
- class="method-args">()</span>
726
- <span class="method-click-advice">click to toggle source</span>
727
- </div>
728
-
729
-
730
- <div class="method-description">
731
-
732
- <p>Returns last element of the list.</p>
733
-
734
-
735
-
736
- <div class="method-source-code" id="last-source">
737
- <pre>
738
- <span class="ruby-comment"># File ds/lists/list.rb, line 124</span>
739
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">last</span>
740
- <span class="ruby-identifier">tail</span>.<span class="ruby-identifier">data</span>
741
- <span class="ruby-keyword">end</span></pre>
742
- </div><!-- last-source -->
743
-
744
- </div>
745
-
746
-
747
-
748
-
749
- </div><!-- last-method -->
750
-
751
-
752
- <div id="length-method" class="method-detail ">
753
- <a name="method-i-length"></a>
754
-
755
-
756
- <div class="method-heading">
757
- <span class="method-name">length</span><span
758
- class="method-args">()</span>
759
- <span class="method-click-advice">click to toggle source</span>
760
- </div>
761
-
762
-
763
- <div class="method-description">
764
-
765
- <p>Returns length of the list.</p>
766
-
767
-
768
-
769
- <div class="method-source-code" id="length-source">
770
- <pre>
771
- <span class="ruby-comment"># File ds/lists/list.rb, line 133</span>
772
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">length</span>
773
- <span class="ruby-identifier">count</span>
774
- <span class="ruby-keyword">end</span></pre>
775
- </div><!-- length-source -->
776
-
777
- </div>
778
-
779
-
780
-
781
-
782
- </div><!-- length-method -->
783
-
784
-
785
- <div id="looped-3F-method" class="method-detail ">
786
- <a name="method-i-looped-3F"></a>
787
-
788
-
789
- <div class="method-heading">
790
- <span class="method-name">looped?</span><span
791
- class="method-args">()</span>
792
- <span class="method-click-advice">click to toggle source</span>
793
- </div>
794
-
795
-
796
- <div class="method-description">
797
-
798
- <p>Returns true if list has cycle.</p>
799
-
800
-
801
-
802
- <div class="method-source-code" id="looped-3F-source">
803
- <pre>
804
- <span class="ruby-comment"># File ds/lists/list.rb, line 165</span>
805
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">looped?</span>
806
- <span class="ruby-operator">!</span><span class="ruby-operator">!</span><span class="ruby-identifier">joint</span>
807
- <span class="ruby-keyword">end</span></pre>
808
- </div><!-- looped-3F-source -->
809
-
810
- </div>
811
-
812
-
813
-
814
-
815
- </div><!-- looped-3F-method -->
816
-
817
-
818
- <div id="merge-method" class="method-detail ">
819
- <a name="method-i-merge"></a>
820
-
821
-
822
- <div class="method-heading">
823
- <span class="method-name">merge</span><span
824
- class="method-args">(other)</span>
825
- <span class="method-click-advice">click to toggle source</span>
826
- </div>
827
-
828
-
829
- <div class="method-description">
830
-
831
- <p>Merge list with other list.</p>
832
-
833
-
834
-
835
- <div class="method-source-code" id="merge-source">
836
- <pre>
837
- <span class="ruby-comment"># File ds/lists/list.rb, line 223</span>
838
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">merge</span>(<span class="ruby-identifier">other</span>)
839
-
840
- <span class="ruby-identifier">a</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">head</span>
841
- <span class="ruby-identifier">b</span> = <span class="ruby-identifier">other</span>.<span class="ruby-identifier">head</span>
842
-
843
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">data</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">b</span>.<span class="ruby-identifier">data</span>
844
- <span class="ruby-identifier">result</span> = <span class="ruby-constant">List</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">a</span>.<span class="ruby-identifier">data</span>)
845
- <span class="ruby-identifier">a</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">next</span>
846
- <span class="ruby-keyword">else</span>
847
- <span class="ruby-identifier">result</span> = <span class="ruby-constant">List</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">b</span>.<span class="ruby-identifier">data</span>)
848
- <span class="ruby-identifier">b</span> = <span class="ruby-identifier">b</span>.<span class="ruby-identifier">next</span>
849
- <span class="ruby-keyword">end</span>
850
-
851
- <span class="ruby-keyword">while</span> <span class="ruby-identifier">a</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">b</span>
852
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">data</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">b</span>.<span class="ruby-identifier">data</span>
853
- <span class="ruby-identifier">result</span>.<span class="ruby-identifier">append</span>(<span class="ruby-identifier">a</span>.<span class="ruby-identifier">data</span>)
854
- <span class="ruby-identifier">a</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">next</span>
855
- <span class="ruby-keyword">else</span>
856
- <span class="ruby-identifier">result</span>.<span class="ruby-identifier">append</span>(<span class="ruby-identifier">b</span>.<span class="ruby-identifier">data</span>)
857
- <span class="ruby-identifier">b</span> = <span class="ruby-identifier">b</span>.<span class="ruby-identifier">next</span>
858
- <span class="ruby-keyword">end</span>
859
- <span class="ruby-keyword">end</span>
860
- <span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">b</span>
861
- <span class="ruby-identifier">result</span>.<span class="ruby-identifier">tail</span>.<span class="ruby-identifier">next</span> = <span class="ruby-identifier">a</span>
862
- <span class="ruby-identifier">result</span>.<span class="ruby-identifier">tail</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">tail</span>
863
- <span class="ruby-keyword">elsif</span> <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>
864
- <span class="ruby-identifier">result</span>.<span class="ruby-identifier">tail</span>.<span class="ruby-identifier">next</span> = <span class="ruby-identifier">b</span>
865
- <span class="ruby-identifier">result</span>.<span class="ruby-identifier">tail</span> = <span class="ruby-identifier">other</span>.<span class="ruby-identifier">tail</span>
866
- <span class="ruby-keyword">end</span>
867
- <span class="ruby-identifier">result</span>
868
- <span class="ruby-keyword">end</span></pre>
869
- </div><!-- merge-source -->
870
-
871
- </div>
872
-
873
-
874
-
875
-
876
- </div><!-- merge-method -->
877
-
878
-
879
- <div id="orderize-method" class="method-detail ">
880
- <a name="method-i-orderize"></a>
881
-
882
-
883
- <div class="method-heading">
884
- <span class="method-name">orderize</span><span
885
- class="method-args">()</span>
886
- <span class="method-click-advice">click to toggle source</span>
887
- </div>
888
-
889
-
890
- <div class="method-description">
891
-
892
- <p>Orderize list by evaluating block. Block should evaluate to one of these
893
- values: 1,0,-1 (same as Comparable).</p>
894
-
895
-
896
-
897
- <div class="method-source-code" id="orderize-source">
898
- <pre>
899
- <span class="ruby-comment"># File ds/lists/list.rb, line 172</span>
900
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">orderize</span>
901
-
902
- <span class="ruby-identifier">zero</span> = <span class="ruby-constant">List</span>.<span class="ruby-identifier">new</span>
903
- <span class="ruby-identifier">plus</span> = <span class="ruby-constant">List</span>.<span class="ruby-identifier">new</span>
904
- <span class="ruby-identifier">minus</span> = <span class="ruby-constant">List</span>.<span class="ruby-identifier">new</span>
905
-
906
- <span class="ruby-identifier">el</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">head</span>
907
-
908
- <span class="ruby-keyword">while</span> <span class="ruby-identifier">el</span>
909
- <span class="ruby-keyword">case</span> <span class="ruby-keyword">yield</span> <span class="ruby-identifier">el</span>.<span class="ruby-identifier">data</span>
910
- <span class="ruby-keyword">when</span> <span class="ruby-value">0</span>
911
- <span class="ruby-identifier">zero_tail</span> = <span class="ruby-identifier">zero</span>.<span class="ruby-identifier">append</span>(<span class="ruby-identifier">el</span>.<span class="ruby-identifier">data</span>)
912
- <span class="ruby-keyword">when</span> <span class="ruby-value">1</span>
913
- <span class="ruby-identifier">plus_tail</span> = <span class="ruby-identifier">plus</span>.<span class="ruby-identifier">append</span>(<span class="ruby-identifier">el</span>.<span class="ruby-identifier">data</span>)
914
- <span class="ruby-keyword">when</span> <span class="ruby-value">-1</span>
915
- <span class="ruby-identifier">minus_tail</span> = <span class="ruby-identifier">minus</span>.<span class="ruby-identifier">append</span>(<span class="ruby-identifier">el</span>.<span class="ruby-identifier">data</span>)
916
- <span class="ruby-keyword">end</span>
917
-
918
- <span class="ruby-identifier">el</span> = <span class="ruby-identifier">el</span>.<span class="ruby-identifier">next</span>
919
- <span class="ruby-keyword">end</span>
920
-
921
- <span class="ruby-identifier">minus_tail</span>.<span class="ruby-identifier">next</span> = <span class="ruby-identifier">zero</span>.<span class="ruby-identifier">head</span>
922
- <span class="ruby-identifier">zero_tail</span>.<span class="ruby-identifier">next</span> = <span class="ruby-identifier">plus</span>.<span class="ruby-identifier">head</span>
923
- <span class="ruby-keyword">return</span> <span class="ruby-identifier">minus</span>
924
- <span class="ruby-keyword">end</span></pre>
925
- </div><!-- orderize-source -->
926
-
927
- </div>
928
-
929
-
930
-
931
-
932
- </div><!-- orderize-method -->
933
-
934
-
935
- <div id="prepend-method" class="method-detail ">
936
- <a name="method-i-prepend"></a>
937
-
938
-
939
- <div class="method-heading">
940
- <span class="method-name">prepend</span><span
941
- class="method-args">(x)</span>
942
- <span class="method-click-advice">click to toggle source</span>
943
- </div>
944
-
945
-
946
- <div class="method-description">
947
-
948
- <p>Prepends new element to list.</p>
949
-
950
-
951
-
952
- <div class="method-source-code" id="prepend-source">
953
- <pre>
954
- <span class="ruby-comment"># File ds/lists/list.rb, line 39</span>
955
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">prepend</span>(<span class="ruby-identifier">x</span>)
956
- <span class="ruby-identifier">el</span> = <span class="ruby-constant">ListElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">x</span>)
957
- <span class="ruby-identifier">el</span>.<span class="ruby-identifier">next</span> = <span class="ruby-ivar">@head</span>
958
- <span class="ruby-ivar">@head</span> = <span class="ruby-identifier">el</span>
959
- <span class="ruby-keyword">end</span></pre>
960
- </div><!-- prepend-source -->
961
-
962
- </div>
963
-
964
-
965
-
966
-
967
- </div><!-- prepend-method -->
968
-
969
-
970
- <div id="print-method" class="method-detail ">
971
- <a name="method-i-print"></a>
972
-
973
-
974
- <div class="method-heading">
975
- <span class="method-name">print</span><span
976
- class="method-args">()</span>
977
- <span class="method-click-advice">click to toggle source</span>
978
- </div>
979
-
980
-
981
- <div class="method-description">
982
-
983
- <p>Prints list.</p>
984
-
985
-
986
-
987
- <div class="method-source-code" id="print-source">
988
- <pre>
989
- <span class="ruby-comment"># File ds/lists/list.rb, line 274</span>
990
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">print</span>
991
- <span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">e</span><span class="ruby-operator">|</span> <span class="ruby-identifier">p</span> }
992
- <span class="ruby-keyword">end</span></pre>
993
- </div><!-- print-source -->
994
-
995
- </div>
996
-
997
-
998
-
999
-
1000
- </div><!-- print-method -->
1001
-
1002
-
1003
- <div id="remove-method" class="method-detail ">
1004
- <a name="method-i-remove"></a>
1005
-
1006
-
1007
- <div class="method-heading">
1008
- <span class="method-name">remove</span><span
1009
- class="method-args">(x)</span>
1010
- <span class="method-click-advice">click to toggle source</span>
1011
- </div>
1012
-
1013
-
1014
- <div class="method-description">
1015
-
1016
- <p>Removes element x from list.</p>
1017
-
1018
-
1019
-
1020
- <div class="method-source-code" id="remove-source">
1021
- <pre>
1022
- <span class="ruby-comment"># File ds/lists/list.rb, line 46</span>
1023
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">remove</span>(<span class="ruby-identifier">x</span>)
1024
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">x</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">head</span>
1025
- <span class="ruby-keyword">self</span>.<span class="ruby-identifier">head</span> = <span class="ruby-identifier">head</span>.<span class="ruby-identifier">next</span>
1026
- <span class="ruby-identifier">x</span>.<span class="ruby-identifier">next</span> = <span class="ruby-keyword">nil</span>
1027
- <span class="ruby-keyword">else</span>
1028
-
1029
- <span class="ruby-identifier">el</span> = <span class="ruby-identifier">head</span>
1030
- <span class="ruby-keyword">while</span> <span class="ruby-identifier">el</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">el</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">x</span>
1031
- <span class="ruby-identifier">prev</span> = <span class="ruby-identifier">el</span>
1032
- <span class="ruby-identifier">el</span> = <span class="ruby-identifier">el</span>.<span class="ruby-identifier">next</span>
1033
- <span class="ruby-keyword">end</span>
1034
-
1035
- <span class="ruby-identifier">raise</span> <span class="ruby-string">&quot;Element not found&quot;</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">el</span>
1036
-
1037
- <span class="ruby-identifier">prev</span>.<span class="ruby-identifier">next</span> = <span class="ruby-identifier">el</span>.<span class="ruby-identifier">next</span>
1038
- <span class="ruby-identifier">el</span>.<span class="ruby-identifier">next</span> = <span class="ruby-keyword">nil</span>
1039
- <span class="ruby-keyword">end</span>
1040
- <span class="ruby-identifier">x</span>
1041
- <span class="ruby-keyword">end</span></pre>
1042
- </div><!-- remove-source -->
1043
-
1044
- </div>
1045
-
1046
-
1047
-
1048
-
1049
- </div><!-- remove-method -->
1050
-
1051
-
1052
- <div id="remove-21-method" class="method-detail ">
1053
- <a name="method-i-remove-21"></a>
1054
-
1055
-
1056
- <div class="method-heading">
1057
- <span class="method-name">remove!</span><span
1058
- class="method-args">(other)</span>
1059
- <span class="method-click-advice">click to toggle source</span>
1060
- </div>
1061
-
1062
-
1063
- <div class="method-description">
1064
-
1065
- <p>Removes elements that exists on the other list.</p>
1066
-
1067
-
1068
-
1069
- <div class="method-source-code" id="remove-21-source">
1070
- <pre>
1071
- <span class="ruby-comment"># File ds/lists/list.rb, line 200</span>
1072
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">remove!</span>(<span class="ruby-identifier">other</span>)
1073
- <span class="ruby-identifier">a</span> = <span class="ruby-identifier">head</span>
1074
- <span class="ruby-identifier">b</span> = <span class="ruby-identifier">other</span>.<span class="ruby-identifier">head</span>
1075
-
1076
- <span class="ruby-keyword">while</span> <span class="ruby-identifier">a</span> <span class="ruby-keyword">and</span> <span class="ruby-identifier">b</span>
1077
-
1078
- <span class="ruby-keyword">while</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">data</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">b</span>.<span class="ruby-identifier">data</span>
1079
- <span class="ruby-identifier">prev</span> = <span class="ruby-identifier">a</span>
1080
- <span class="ruby-identifier">a</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">next</span>
1081
- <span class="ruby-keyword">end</span>
1082
-
1083
- <span class="ruby-keyword">while</span> <span class="ruby-identifier">b</span>.<span class="ruby-identifier">data</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">data</span>
1084
- <span class="ruby-identifier">b</span> = <span class="ruby-identifier">b</span>.<span class="ruby-identifier">next</span>
1085
- <span class="ruby-keyword">end</span>
1086
-
1087
- <span class="ruby-identifier">a</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">next</span>
1088
- <span class="ruby-identifier">prev</span>.<span class="ruby-identifier">next</span> = <span class="ruby-identifier">a</span>
1089
- <span class="ruby-identifier">b</span> = <span class="ruby-identifier">b</span>.<span class="ruby-identifier">next</span>
1090
- <span class="ruby-keyword">end</span>
1091
- <span class="ruby-keyword">self</span>
1092
- <span class="ruby-keyword">end</span></pre>
1093
- </div><!-- remove-21-source -->
1094
-
1095
- </div>
1096
-
1097
-
1098
-
1099
-
1100
- </div><!-- remove-21-method -->
1101
-
1102
-
1103
- <div id="reverse-21-method" class="method-detail ">
1104
- <a name="method-i-reverse-21"></a>
1105
-
1106
-
1107
- <div class="method-heading">
1108
- <span class="method-name">reverse!</span><span
1109
- class="method-args">()</span>
1110
- <span class="method-click-advice">click to toggle source</span>
1111
- </div>
1112
-
1113
-
1114
- <div class="method-description">
1115
-
1116
- <p>Reverses list.</p>
1117
-
1118
-
1119
-
1120
- <div class="method-source-code" id="reverse-21-source">
1121
- <pre>
1122
- <span class="ruby-comment"># File ds/lists/list.rb, line 256</span>
1123
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">reverse!</span>
1124
- <span class="ruby-ivar">@tail</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">head</span>
1125
- <span class="ruby-identifier">prev</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">head</span>
1126
- <span class="ruby-identifier">elem</span> = <span class="ruby-identifier">prev</span>.<span class="ruby-identifier">next</span>
1127
- <span class="ruby-identifier">prev</span>.<span class="ruby-identifier">next</span> = <span class="ruby-keyword">nil</span>
1128
- <span class="ruby-keyword">while</span> <span class="ruby-identifier">elem</span>
1129
- <span class="ruby-identifier">nxt</span> = <span class="ruby-identifier">elem</span>.<span class="ruby-identifier">next</span>
1130
- <span class="ruby-identifier">elem</span>.<span class="ruby-identifier">next</span> = <span class="ruby-identifier">prev</span>
1131
- <span class="ruby-identifier">prev</span> = <span class="ruby-identifier">elem</span>
1132
- <span class="ruby-identifier">elem</span> = <span class="ruby-identifier">nxt</span>
1133
- <span class="ruby-keyword">end</span>
1134
-
1135
- <span class="ruby-ivar">@head</span> = <span class="ruby-identifier">prev</span>
1136
- <span class="ruby-keyword">self</span>
1137
-
1138
- <span class="ruby-keyword">end</span></pre>
1139
- </div><!-- reverse-21-source -->
1140
-
1141
- </div>
1142
-
1143
-
1144
-
1145
-
1146
- </div><!-- reverse-21-method -->
1147
-
1148
-
1149
- <div id="shift-method" class="method-detail ">
1150
- <a name="method-i-shift"></a>
1151
-
1152
-
1153
- <div class="method-heading">
1154
- <span class="method-name">shift</span><span
1155
- class="method-args">()</span>
1156
- <span class="method-click-advice">click to toggle source</span>
1157
- </div>
1158
-
1159
-
1160
- <div class="method-description">
1161
-
1162
- <p>Removes list head.</p>
1163
-
1164
-
1165
-
1166
- <div class="method-source-code" id="shift-source">
1167
- <pre>
1168
- <span class="ruby-comment"># File ds/lists/list.rb, line 67</span>
1169
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">shift</span>
1170
- <span class="ruby-identifier">remove</span>(<span class="ruby-identifier">head</span>).<span class="ruby-identifier">data</span>
1171
- <span class="ruby-keyword">end</span></pre>
1172
- </div><!-- shift-source -->
1173
-
1174
- </div>
1175
-
1176
-
1177
-
1178
-
1179
- </div><!-- shift-method -->
1180
-
1181
-
1182
- <div id="to_a-method" class="method-detail ">
1183
- <a name="method-i-to_a"></a>
1184
-
1185
-
1186
- <div class="method-heading">
1187
- <span class="method-name">to_a</span><span
1188
- class="method-args">()</span>
1189
- <span class="method-click-advice">click to toggle source</span>
1190
- </div>
1191
-
1192
-
1193
- <div class="method-description">
1194
-
1195
- <p>Converts list to array.</p>
1196
-
1197
-
1198
-
1199
- <div class="method-source-code" id="to_a-source">
1200
- <pre>
1201
- <span class="ruby-comment"># File ds/lists/list.rb, line 279</span>
1202
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">to_a</span>
1203
- <span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">e</span><span class="ruby-operator">|</span> <span class="ruby-identifier">e</span>}
1204
- <span class="ruby-keyword">end</span></pre>
1205
- </div><!-- to_a-source -->
1206
-
1207
- </div>
1208
-
1209
-
1210
-
1211
-
1212
- </div><!-- to_a-method -->
1213
-
1214
-
1215
- <div id="zip-3F-method" class="method-detail ">
1216
- <a name="method-i-zip-3F"></a>
1217
-
1218
-
1219
- <div class="method-heading">
1220
- <span class="method-name">zip?</span><span
1221
- class="method-args">(other)</span>
1222
- <span class="method-click-advice">click to toggle source</span>
1223
- </div>
1224
-
1225
-
1226
- <div class="method-description">
1227
-
1228
- <p>Checks if list is linked at the end with other list.</p>
1229
-
1230
-
1231
-
1232
- <div class="method-source-code" id="zip-3F-source">
1233
- <pre>
1234
- <span class="ruby-comment"># File ds/lists/list.rb, line 138</span>
1235
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">zip?</span>(<span class="ruby-identifier">other</span>)
1236
- <span class="ruby-identifier">tail</span>.<span class="ruby-identifier">equal?</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">tail</span>
1237
- <span class="ruby-keyword">end</span></pre>
1238
- </div><!-- zip-3F-source -->
1239
-
1240
- </div>
1241
-
1242
-
1243
-
1244
-
1245
- </div><!-- zip-3F-method -->
1246
-
1247
-
1248
- </div><!-- public-instance-method-details -->
1249
-
1250
- </div><!-- 5Buntitled-5D -->
1251
-
1252
-
1253
- </div><!-- documentation -->
1254
-
1255
- <div id="validator-badges">
1256
- <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
1257
- <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
1258
- Rdoc Generator</a> 2</small>.</p>
1259
- </div>
1260
-
1261
- </body>
1262
- </html>
1263
-