├── .gitignore
├── .idea
├── Livro-JavaScript-EstruturaDadosAlgoritmoJavaScript.iml
├── misc.xml
├── modules.xml
├── php.xml
└── vcs.xml
├── 01-JavaScript-UmaRapidaVisaoGeral
├── 01-helloWord.html
├── 01-helloWorld.js
├── 02-Variables.html
├── 02-Variables.js
├── 03-Operators.html
├── 03-Operators.js
├── 04-TruthyFalsy.html
├── 04-TruthyFalsy.js
├── 05-EqualsOperators.html
├── 05-EqualsOperators.js
└── README.md
├── 02-Arrays
└── README.md
├── 03-Pilhas
└── README.md
├── 04-Filas
└── README.md
├── 05-Listas-ligadas
└── README.md
├── 06-Conjuntos
└── README.md
├── 07-Dicionarios-e-hashes
└── README.md
├── 08-Arvores
└── README.md
├── 09-Grafos
└── README.md
├── 10-Algoritmos-de-ordenacao-e-busca
└── README.md
├── 11-Padroes-de-algoritmos
└── README.md
├── 12-Complexidade-de-algoritmos
└── README.md
└── README.md
/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | # Created by https://www.gitignore.io/api/node,intellij
3 |
4 | ### Intellij ###
5 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
6 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
7 |
8 | # User-specific stuff:
9 | .idea/**/workspace.xml
10 | .idea/**/tasks.xml
11 | .idea/dictionaries
12 |
13 | # Sensitive or high-churn files:
14 | .idea/**/dataSources/
15 | .idea/**/dataSources.ids
16 | .idea/**/dataSources.xml
17 | .idea/**/dataSources.local.xml
18 | .idea/**/sqlDataSources.xml
19 | .idea/**/dynamic.xml
20 | .idea/**/uiDesigner.xml
21 |
22 | # Gradle:
23 | .idea/**/gradle.xml
24 | .idea/**/libraries
25 |
26 | # CMake
27 | cmake-build-debug/
28 |
29 | # Mongo Explorer plugin:
30 | .idea/**/mongoSettings.xml
31 |
32 | ## File-based project format:
33 | *.iws
34 |
35 | ## Plugin-specific files:
36 |
37 | # IntelliJ
38 | /out/
39 |
40 | # mpeltonen/sbt-idea plugin
41 | .idea_modules/
42 |
43 | # JIRA plugin
44 | atlassian-ide-plugin.xml
45 |
46 | # Cursive Clojure plugin
47 | .idea/replstate.xml
48 |
49 | # Ruby plugin and RubyMine
50 | /.rakeTasks
51 |
52 | # Crashlytics plugin (for Android Studio and IntelliJ)
53 | com_crashlytics_export_strings.xml
54 | crashlytics.properties
55 | crashlytics-build.properties
56 | fabric.properties
57 |
58 | ### Intellij Patch ###
59 | # Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
60 |
61 | # *.iml
62 | # modules.xml
63 | # .idea/misc.xml
64 | # *.ipr
65 |
66 | # Sonarlint plugin
67 | .idea/sonarlint
68 |
69 | ### Node ###
70 | # Logs
71 | logs
72 | *.log
73 | npm-debug.log*
74 | yarn-debug.log*
75 | yarn-error.log*
76 |
77 | # Runtime data
78 | pids
79 | *.pid
80 | *.seed
81 | *.pid.lock
82 |
83 | # Directory for instrumented libs generated by jscoverage/JSCover
84 | lib-cov
85 |
86 | # Coverage directory used by tools like istanbul
87 | coverage
88 |
89 | # nyc test coverage
90 | .nyc_output
91 |
92 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
93 | .grunt
94 |
95 | # Bower dependency directory (https://bower.io/)
96 | bower_components
97 |
98 | # node-waf configuration
99 | .lock-wscript
100 |
101 | # Compiled binary addons (http://nodejs.org/api/addons.html)
102 | build/Release
103 |
104 | # Dependency directories
105 | node_modules/
106 | jspm_packages/
107 |
108 | # Typescript v1 declaration files
109 | typings/
110 |
111 | # Optional npm cache directory
112 | .npm
113 |
114 | # Optional eslint cache
115 | .eslintcache
116 |
117 | # Optional REPL history
118 | .node_repl_history
119 |
120 | # Output of 'npm pack'
121 | *.tgz
122 |
123 | # Yarn Integrity file
124 | .yarn-integrity
125 |
126 | # dotenv environment variables file
127 | .env
128 |
129 |
130 | # End of https://www.gitignore.io/api/node,intellij
--------------------------------------------------------------------------------
/.idea/Livro-JavaScript-EstruturaDadosAlgoritmoJavaScript.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/php.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/01-JavaScript-UmaRapidaVisaoGeral/01-helloWord.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 01
6 |
7 |
8 |
9 |
13 |
14 |
--------------------------------------------------------------------------------
/01-JavaScript-UmaRapidaVisaoGeral/01-helloWorld.js:
--------------------------------------------------------------------------------
1 | function output(t) {
2 | document.write('' + t + '
');
3 | }
4 |
5 | alert('Hello, World!');
6 | console.log('Hello, World!');
7 | output('Hello, World!');
--------------------------------------------------------------------------------
/01-JavaScript-UmaRapidaVisaoGeral/02-Variables.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 02
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/01-JavaScript-UmaRapidaVisaoGeral/02-Variables.js:
--------------------------------------------------------------------------------
1 | var num = 1; // {1}
2 | num = 3; // {2}
3 |
4 | var price = 1.5; // {3}
5 | var myName = 'Packt'; // {4}
6 | var trueValue = true; // {5}
7 | var nullVar = null; // {6}
8 | var und; // {7}
9 |
10 | console.log('num: ' + num);
11 | console.log('myName: ' + myName);
12 | console.log('trueValue: ' + trueValue);
13 | console.log('price: ' + price);
14 | console.log('nullVar: ' + nullVar);
15 | console.log('und: ' + und);
16 |
17 | // ******* Variable Scope
18 |
19 | var myVariable = 'global';
20 | myOtherVariable = 'global';
21 |
22 | function myFunction() {
23 | var myVariable = 'local';
24 | return myVariable;
25 | }
26 |
27 | function myOtherFunction() {
28 | myOtherVariable = 'local';
29 | return myOtherVariable;
30 | }
31 |
32 | console.log(myVariable); //{1}
33 | console.log(myFunction()); //{2}
34 |
35 | console.log(myOtherVariable); //{3}
36 | console.log(myOtherFunction()); //{4}
37 | console.log(myOtherVariable); //{5}
--------------------------------------------------------------------------------
/01-JavaScript-UmaRapidaVisaoGeral/03-Operators.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 04-TruthyFalsy
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/01-JavaScript-UmaRapidaVisaoGeral/03-Operators.js:
--------------------------------------------------------------------------------
1 | /* Arithmetic operators */
2 | var num = 0; // {1}
3 | console.log('num value is ' + num);
4 |
5 | num = num + 2;
6 | console.log('New num value is ' + num);
7 |
8 | num = num * 3;
9 | console.log('New num value is ' + num);
10 |
11 | num = num / 2;
12 | console.log('New num value is ' + num);
13 |
14 | num++;
15 | num--;
16 |
17 | console.log('New num value is ' + num);
18 |
19 | console.log('num mod 2 value is ' + num % 2);
20 |
21 | /* Assignment operators */
22 | num += 1;
23 | num -= 2;
24 | num *= 3;
25 | num /= 2;
26 | num %= 3;
27 |
28 | console.log('New num value is ' + num);
29 |
30 | /* Assignment operators */
31 | console.log('num == 1 : ' + (num == 1));
32 | console.log('num === 1 : ' + (num === 1));
33 | console.log('num != 1 : ' + (num != 1));
34 | console.log('num > 1 : ' + (num > 1));
35 | console.log('num < 1 : ' + (num < 1));
36 | console.log('num >= 1 : ' + (num >= 1));
37 | console.log('num <= 1 : ' + (num <= 1));
38 |
39 | /* Logical operators */
40 | console.log('true && false : ' + (true && false)); // false
41 | console.log('true || false : ' + (true || false)); // true
42 | console.log('!true : ' + !true); // false
43 |
44 | /* Bitwise operators */
45 | console.log('5 & 1:', 5 & 1); // same as 0101 & 0001 (result 0001 / 1)
46 | console.log('5 | 1:', 5 | 1); // same as 0101 | 0001 (result 0101 / 5)
47 | console.log('~ 5:', ~5); // same as ~0101 (result 1010 / 10)
48 | console.log('5 ^ 1:', 5 ^ 1); // same as 0101 ^ 0001 (result 0100 / 4)
49 | console.log('5 << 1:', 5 << 1); // same as 0101 << 1 (result 1010 / 10)
50 | console.log('5 >> 1:', 5 >> 1); // same as 0101 >> 1 (result 0010 / 2)
51 |
52 | /* typeOf */
53 | console.log('typeof num:', typeof num);
54 | console.log('typeof Packt:', typeof 'Packt');
55 | console.log('typeof true:', typeof true);
56 | console.log('typeof [1,2,3]:', typeof [1, 2, 3]);
57 | console.log('typeof {name:John}:', typeof { name: 'John' });
58 |
59 | /* delete */
60 | var myObj = { name: 'John', age: 21 };
61 | delete myObj.age;
62 | console.log(myObj); // Object {name: "John"}
--------------------------------------------------------------------------------
/01-JavaScript-UmaRapidaVisaoGeral/04-TruthyFalsy.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/01-JavaScript-UmaRapidaVisaoGeral/04-TruthyFalsy.js:
--------------------------------------------------------------------------------
1 | function testTruthy(val) {
2 | return val ? console.log('truthy') : console.log('falsy');
3 | }
4 |
5 | testTruthy(true); // true
6 | testTruthy(false); // false
7 | testTruthy(new Boolean(false)); // true (object is always true)
8 |
9 | testTruthy(''); // false
10 | testTruthy('a'); // true
11 | testTruthy('Packt'); // true
12 | testTruthy(new String('')); // true (object is always true)
13 |
14 | testTruthy(1); // true
15 | testTruthy(-1); // true
16 | testTruthy(NaN); // false
17 | testTruthy(new Number(NaN)); // true (object is always true)
18 |
19 | testTruthy({}); // true (object is always true)
20 |
21 | var obj = { name: 'John' };
22 | testTruthy(obj); // true
23 | testTruthy(obj.name); // true
24 | testTruthy(obj.age); // false (property age does not exist)
--------------------------------------------------------------------------------
/01-JavaScript-UmaRapidaVisaoGeral/05-EqualsOperators.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/01-JavaScript-UmaRapidaVisaoGeral/05-EqualsOperators.js:
--------------------------------------------------------------------------------
1 | // Packt == true
2 |
3 | console.log('packt' ? true : false);
4 | // outputs true
5 |
6 | console.log('packt' == true);
7 | // 1 - converts Boolean using toNumber
8 | // 'packt' == 1
9 | // 2 - converts String using toNumber
10 | // NaN == 1
11 | // outputs false
12 |
13 | console.log('packt' == false);
14 | // 1 - converts Boolean using toNumber
15 | // 'packt' == 0
16 | // 2 - converts String using toNumber
17 | // NaN == 0
18 | // outputs false
19 |
20 | console.log([0] == true);
21 | // 1 - converts Boolean using toNumber
22 | // [0] == 1
23 | // 2 - converts Object using toPrimitive
24 | // 2.1 - [0].valueOf() is not primitive
25 | // 2.2 - [0].toString is 0
26 | // 0 == 1
27 | // outputs false
28 |
29 | //* ****************************** ===
30 | console.log('packt' === true); // false
31 |
32 | console.log('packt' === 'packt'); // true
33 |
34 | var person1 = { name: 'John' };
35 | var person2 = { name: 'John' };
36 | console.log(person1 === person2); // false, different objects
--------------------------------------------------------------------------------
/01-JavaScript-UmaRapidaVisaoGeral/README.md:
--------------------------------------------------------------------------------
1 | # 1. JavaScript - uma rápida visão geral
2 |
3 | Resumo do cap 01
4 |
5 | ## Índice
6 |
7 | 1. [Estrutura de dados e algoritmos em JavaScript](#parte1)
8 | 2. [Básico sobre o JavaScript](#parte2)
9 | 3. [Variáveis](#parte3)
10 | 4. [Operadores](#parte4)
11 | 5. [Truthy e falsy](#parte5)
12 | 6. [Funções dos operadores de igualdade (== e ===)](#parte6)
13 | 7. [Estruturas de controle](#parte7)
14 | 8. [Laços](#parte8)
15 | 9. [Funções](#parte9)
16 | 10. [Programação orientada a objetos em JavaScript](#parte10)
17 | 11. [Depuração e ferramentas](#parte11)
18 | 12. [Introdução à ECMAScript](#parte12)
19 | 13. [Funcionalidades da ECMAScript 6](#parte13)
20 | 14. [Funcionalidades da ECMAScript 7](#parte14)
21 | 15. [Resumo.](#parte15)
22 | ---
23 |
24 |
25 | ## 1 - Estrutura de dados e algoritmos em JavaScript
26 |
27 |
28 |
29 | [Voltar ao Índice](#indice)
30 |
31 | ---
32 |
33 |
34 | ## 2 - Básico sobre o JavaScript
35 |
36 |
37 |
38 | [Voltar ao Índice](#indice)
39 |
40 | ---
41 |
42 |
43 | ## 3 - Variáveis
44 |
45 |
46 |
47 | [Voltar ao Índice](#indice)
48 |
49 | ---
50 |
51 |
52 | ## 4 - Operadores
53 |
54 |
55 |
56 | [Voltar ao Índice](#indice)
57 |
58 | ---
59 |
60 |
61 | ## 5 - Truthy e falsy
62 |
63 |
64 |
65 | [Voltar ao Índice](#indice)
66 |
67 | ---
68 |
69 |
70 | ## 6 - Funções dos operadores de igualdade (== e ===)
71 |
72 |
73 |
74 | [Voltar ao Índice](#indice)
75 |
76 | ---
77 |
78 |
79 | ## 7 - Estruturas de controle
80 |
81 |
82 |
83 | [Voltar ao Índice](#indice)
84 |
85 | ---
86 |
87 |
88 | ## 8 - Laços
89 |
90 |
91 |
92 | [Voltar ao Índice](#indice)
93 |
94 | ---
95 |
96 |
97 | ## 9 - Funções
98 |
99 |
100 |
101 | [Voltar ao Índice](#indice)
102 |
103 | ---
104 |
105 |
106 | ## 10 - Programação orientada a objetos em JavaScript
107 |
108 |
109 |
110 | [Voltar ao Índice](#indice)
111 |
112 | ---
113 |
114 |
115 | ## 11 - Depuração e ferramentas
116 |
117 |
118 |
119 | [Voltar ao Índice](#indice)
120 |
121 | ---
122 |
123 |
124 | ## 12 - Introdução à ECMAScript
125 |
126 |
127 |
128 | [Voltar ao Índice](#indice)
129 |
130 | ---
131 |
132 |
133 | ## 13 - Funcionalidades da ECMAScript 6
134 |
135 |
136 |
137 | [Voltar ao Índice](#indice)
138 |
139 | ---
140 |
141 |
142 | ## 14 - Funcionalidades da ECMAScript 7
143 |
144 |
145 |
146 | [Voltar ao Índice](#indice)
147 |
148 | ---
149 |
150 |
151 | ## 15 - Resumo.
152 |
153 |
154 |
155 | [Voltar ao Índice](#indice)
156 |
157 | ---
158 |
159 |
--------------------------------------------------------------------------------
/02-Arrays/README.md:
--------------------------------------------------------------------------------
1 | # 2. Arrays
2 |
3 | Resumo do Cap. 02
4 |
5 | ## Índice
6 |
7 | 1. [Por que devemos usar arrays?](#parte1)
8 | 2. [Criando e inicializando arrays](#parte2)
9 | 3. [Acessando elementos e iterando em um array](#parte3)
10 | 4. [Acrescentando elementos](#parte4)
11 | 5. [Usando o método push](#parte5)
12 | 6. [Inserindo um elemento na primeira posição](#parte6)
13 | 7. [Usando o método unshift](#parte7)
14 | 8. [Removendo elementos](#parte8)
15 | 9. [Removendo um elemento da primeira posição](#parte9)
16 | 10. [Usando o método shift](#parte10)
17 | 11. [Acrescentando e removendo elementos de uma posição específica](#parte11)
18 | 12. [Arrays bidimensionais e multidimensionais](#parte12)
19 | 13. [Iterando pelos elementos de arrays bidimensionais](#parte13)
20 | 14. [Arrays multidimensionais](#parte14)
21 | 15. [Referências para métodos de array em JavaScript](#parte15)
22 | 16. [Juntando vários arrays](#parte16)
23 | 17. [Funções de iteração](#parte17)
24 | 18. [Iterando com o método every](#parte18)
25 | 19. [Iterando com o método some](#parte19)
26 | 20. [Iterando com forEach](#parte20)
27 | 21. [Usando map e filter](#parte21)
28 | 22. [Usando o método reduce](#parte22)
29 | 23. [ECMAScript 6 e novas funcionalidades de Array](#parte23)
30 | 24. [Iterando com forEach e funções de seta](#parte24)
31 | 25. [Iterando com o laço for..of](#parte25)
32 | 26. [Usando o novo iterador da ES6 (@@iterator)](#parte26)
33 | 27. [Ordenando elementos](#parte27)
34 | 28. [Convertendo um array em uma string](#parte28)
35 | 29. [Classe TypedArray](#parte29)
36 | 30. [Resumo](#parte30)
37 | ---
38 |
39 |
40 | ## 1 - Por que devemos usar arrays?
41 |
42 |
43 |
44 | [Voltar ao Índice](#indice)
45 |
46 | ---
47 |
48 |
49 | ## 2 - Criando e inicializando arrays
50 |
51 |
52 |
53 | [Voltar ao Índice](#indice)
54 |
55 | ---
56 |
57 |
58 | ## 3 - Acessando elementos e iterando em um array
59 |
60 |
61 |
62 | [Voltar ao Índice](#indice)
63 |
64 | ---
65 |
66 |
67 | ## 4 - Acrescentando elementos
68 |
69 |
70 |
71 | [Voltar ao Índice](#indice)
72 |
73 | ---
74 |
75 |
76 | ## 5 - Usando o método push
77 |
78 |
79 |
80 | [Voltar ao Índice](#indice)
81 |
82 | ---
83 |
84 |
85 | ## 6 - Inserindo um elemento na primeira posição
86 |
87 |
88 |
89 | [Voltar ao Índice](#indice)
90 |
91 | ---
92 |
93 |
94 | ## 7 - Usando o método unshift
95 |
96 |
97 |
98 | [Voltar ao Índice](#indice)
99 |
100 | ---
101 |
102 |
103 | ## 8 - Removendo elementos
104 |
105 |
106 |
107 | [Voltar ao Índice](#indice)
108 |
109 | ---
110 |
111 |
112 | ## 9 - Removendo um elemento da primeira posição
113 |
114 |
115 |
116 | [Voltar ao Índice](#indice)
117 |
118 | ---
119 |
120 |
121 | ## 10 - Usando o método shift
122 |
123 |
124 |
125 | [Voltar ao Índice](#indice)
126 |
127 | ---
128 |
129 |
130 | ## 11 - Acrescentando e removendo elementos de uma posição específica
131 |
132 |
133 |
134 | [Voltar ao Índice](#indice)
135 |
136 | ---
137 |
138 |
139 | ## 12 - Arrays bidimensionais e multidimensionais
140 |
141 |
142 |
143 | [Voltar ao Índice](#indice)
144 |
145 | ---
146 |
147 |
148 | ## 13 - Iterando pelos elementos de arrays bidimensionais
149 |
150 |
151 |
152 | [Voltar ao Índice](#indice)
153 |
154 | ---
155 |
156 |
157 | ## 14 - Arrays multidimensionais
158 |
159 |
160 |
161 | [Voltar ao Índice](#indice)
162 |
163 | ---
164 |
165 |
166 | ## 15 - Referências para métodos de array em JavaScript
167 |
168 |
169 |
170 | [Voltar ao Índice](#indice)
171 |
172 | ---
173 |
174 |
175 | ## 16 - Juntando vários arrays
176 |
177 |
178 |
179 | [Voltar ao Índice](#indice)
180 |
181 | ---
182 |
183 |
184 | ## 17 - Funções de iteração
185 |
186 |
187 |
188 | [Voltar ao Índice](#indice)
189 |
190 | ---
191 |
192 |
193 | ## 18 - Iterando com o método every
194 |
195 |
196 |
197 | [Voltar ao Índice](#indice)
198 |
199 | ---
200 |
201 |
202 | ## 19 - Iterando com o método some
203 |
204 |
205 |
206 | [Voltar ao Índice](#indice)
207 |
208 | ---
209 |
210 |
211 | ## 20 - Iterando com forEach
212 |
213 |
214 |
215 | [Voltar ao Índice](#indice)
216 |
217 | ---
218 |
219 |
220 | ## 21 - Usando map e filter
221 |
222 |
223 |
224 | [Voltar ao Índice](#indice)
225 |
226 | ---
227 |
228 |
229 | ## 22 - Usando o método reduce
230 |
231 |
232 |
233 | [Voltar ao Índice](#indice)
234 |
235 | ---
236 |
237 |
238 | ## 23 - ECMAScript 6 e novas funcionalidades de Array
239 |
240 |
241 |
242 | [Voltar ao Índice](#indice)
243 |
244 | ---
245 |
246 |
247 | ## 24 - Iterando com forEach e funções de seta
248 |
249 |
250 |
251 | [Voltar ao Índice](#indice)
252 |
253 | ---
254 |
255 |
256 | ## 25 - Iterando com o laço for..of
257 |
258 |
259 |
260 | [Voltar ao Índice](#indice)
261 |
262 | ---
263 |
264 |
265 | ## 26 - Usando o novo iterador da ES6 (@@iterator)
266 |
267 |
268 |
269 | [Voltar ao Índice](#indice)
270 |
271 | ---
272 |
273 |
274 | ## 27 - Ordenando elementos
275 |
276 |
277 |
278 | [Voltar ao Índice](#indice)
279 |
280 | ---
281 |
282 |
283 | ## 28 - Convertendo um array em uma string
284 |
285 |
286 |
287 | [Voltar ao Índice](#indice)
288 |
289 | ---
290 |
291 |
292 | ## 29 - Classe TypedArray
293 |
294 |
295 |
296 | [Voltar ao Índice](#indice)
297 |
298 | ---
299 |
300 |
301 | ## 30 - Resumo
302 |
303 |
304 |
305 | [Voltar ao Índice](#indice)
306 |
307 | ---
308 |
309 |
--------------------------------------------------------------------------------
/03-Pilhas/README.md:
--------------------------------------------------------------------------------
1 | # 3. Pilhas
2 |
3 | Resumo do Cap. 03
4 |
5 | ## Índice
6 |
7 | 1. [Estrutura de dados pilha](#parte1)
8 | 2. [Criando uma pilha](#parte2)
9 | 3. [Empilhando elementos na pilha](#parte3)
10 | 4. [Desempilhando elementos da pilha](#parte4)
11 | 5. [Dando uma espiada no elemento que está no topo da pilha](#parte5)
12 | 6. [Verificando se a pilha está vazia](#parte6)
13 | 7. [Limpando e exibindo os elementos da pilha](#parte7)
14 | 8. [Usando a classe Stack](#parte8)
15 | 9. [EcmaScript 6 e a classe Stack](#parte9)
16 | 10. [Declarando a classe Stack usando a sintaxe da ES6](#parte10)
17 | 11. [Classes ES6 com Symbols no escopo](#parte11)
18 | 12. [Classes ES6 com WeakMap](#parte12)
19 | 13. [Resolvendo problemas usando pilhas](#parte13)
20 | 14. [Decimal para binário](#parte14)
21 | 15. [Algoritmo conversor de base](#parte15)
22 | 16. [Resumo](#parte16)
23 | ---
24 |
25 |
26 | ## 1 - Estrutura de dados pilha
27 |
28 |
29 |
30 | [Voltar ao Índice](#indice)
31 |
32 | ---
33 |
34 |
35 | ## 2 - Criando uma pilha
36 |
37 |
38 |
39 | [Voltar ao Índice](#indice)
40 |
41 | ---
42 |
43 |
44 | ## 3 - Empilhando elementos na pilha
45 |
46 |
47 |
48 | [Voltar ao Índice](#indice)
49 |
50 | ---
51 |
52 |
53 | ## 4 - Desempilhando elementos da pilha
54 |
55 |
56 |
57 | [Voltar ao Índice](#indice)
58 |
59 | ---
60 |
61 |
62 | ## 5 - Dando uma espiada no elemento que está no topo da pilha
63 |
64 |
65 |
66 | [Voltar ao Índice](#indice)
67 |
68 | ---
69 |
70 |
71 | ## 6 - Verificando se a pilha está vazia
72 |
73 |
74 |
75 | [Voltar ao Índice](#indice)
76 |
77 | ---
78 |
79 |
80 | ## 7 - Limpando e exibindo os elementos da pilha
81 |
82 |
83 |
84 | [Voltar ao Índice](#indice)
85 |
86 | ---
87 |
88 |
89 | ## 8 - Usando a classe Stack
90 |
91 |
92 |
93 | [Voltar ao Índice](#indice)
94 |
95 | ---
96 |
97 |
98 | ## 9 - EcmaScript 6 e a classe Stack
99 |
100 |
101 |
102 | [Voltar ao Índice](#indice)
103 |
104 | ---
105 |
106 |
107 | ## 10 - Declarando a classe Stack usando a sintaxe da ES6
108 |
109 |
110 |
111 | [Voltar ao Índice](#indice)
112 |
113 | ---
114 |
115 |
116 | ## 11 - Classes ES6 com Symbols no escopo
117 |
118 |
119 |
120 | [Voltar ao Índice](#indice)
121 |
122 | ---
123 |
124 |
125 | ## 12 - Classes ES6 com WeakMap
126 |
127 |
128 |
129 | [Voltar ao Índice](#indice)
130 |
131 | ---
132 |
133 |
134 | ## 13 - Resolvendo problemas usando pilhas
135 |
136 |
137 |
138 | [Voltar ao Índice](#indice)
139 |
140 | ---
141 |
142 |
143 | ## 14 - Decimal para binário
144 |
145 |
146 |
147 | [Voltar ao Índice](#indice)
148 |
149 | ---
150 |
151 |
152 | ## 15 - Algoritmo conversor de base
153 |
154 |
155 |
156 | [Voltar ao Índice](#indice)
157 |
158 | ---
159 |
160 |
161 | ## 16 - Resumo
162 |
163 |
164 |
165 | [Voltar ao Índice](#indice)
166 |
167 | ---
168 |
169 |
--------------------------------------------------------------------------------
/04-Filas/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/josemalcher/Livro-JavaScript-EstruturaDadosAlgoritmoJavaScript/0a6f263a6197f361369e13592b4f289d08657020/04-Filas/README.md
--------------------------------------------------------------------------------
/05-Listas-ligadas/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/josemalcher/Livro-JavaScript-EstruturaDadosAlgoritmoJavaScript/0a6f263a6197f361369e13592b4f289d08657020/05-Listas-ligadas/README.md
--------------------------------------------------------------------------------
/06-Conjuntos/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/josemalcher/Livro-JavaScript-EstruturaDadosAlgoritmoJavaScript/0a6f263a6197f361369e13592b4f289d08657020/06-Conjuntos/README.md
--------------------------------------------------------------------------------
/07-Dicionarios-e-hashes/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/josemalcher/Livro-JavaScript-EstruturaDadosAlgoritmoJavaScript/0a6f263a6197f361369e13592b4f289d08657020/07-Dicionarios-e-hashes/README.md
--------------------------------------------------------------------------------
/08-Arvores/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/josemalcher/Livro-JavaScript-EstruturaDadosAlgoritmoJavaScript/0a6f263a6197f361369e13592b4f289d08657020/08-Arvores/README.md
--------------------------------------------------------------------------------
/09-Grafos/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/josemalcher/Livro-JavaScript-EstruturaDadosAlgoritmoJavaScript/0a6f263a6197f361369e13592b4f289d08657020/09-Grafos/README.md
--------------------------------------------------------------------------------
/10-Algoritmos-de-ordenacao-e-busca/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/josemalcher/Livro-JavaScript-EstruturaDadosAlgoritmoJavaScript/0a6f263a6197f361369e13592b4f289d08657020/10-Algoritmos-de-ordenacao-e-busca/README.md
--------------------------------------------------------------------------------
/11-Padroes-de-algoritmos/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/josemalcher/Livro-JavaScript-EstruturaDadosAlgoritmoJavaScript/0a6f263a6197f361369e13592b4f289d08657020/11-Padroes-de-algoritmos/README.md
--------------------------------------------------------------------------------
/12-Complexidade-de-algoritmos/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/josemalcher/Livro-JavaScript-EstruturaDadosAlgoritmoJavaScript/0a6f263a6197f361369e13592b4f289d08657020/12-Complexidade-de-algoritmos/README.md
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | # Javascript estrutura de dados e algoritmos 2 Ed.
3 |
4 | https://github.com/loiane/javascript-datastructures-algorithms/
5 |
6 | Meu resumo e Código fonte do livro **_Javascript Estrutura de Dados e Algoritmos Ed. 2_**.
7 |
8 | [Repositorio Oficcial - Loiane G.](https://github.com/loiane/javascript-datastructures-algorithms/) original do livro
9 |
10 | ## Índice
11 |
12 | 1. [Capítulo 01 JavaScript – uma visão geral rápida](#parte1)
13 | 2. [Capítulo 02 Visão geral sobre ECMAScript e TypeScript](#parte2)
14 | 3. [Capítulo 03 Arrays](#parte3)
15 | 4. [Capítulo 04 Pilhas](#parte4)
16 | 5. [Capítulo 05 Filas e deques](#parte5)
17 | 6. [Capítulo 06 Listas ligadas](#parte6)
18 | 7. [Capítulo 07 Conjuntos](#parte7)
19 | 8. [Capítulo 08 Dicionários e hashes](#parte8)
20 | 9. [Capítulo 09 Recursão](#parte9)
21 | 10. [Capítulo 10 Árvores](#parte10)
22 | 11. [Capítulo 11 Heap binário e heap sort](#parte11)
23 | 12. [Capítulo 12 Grafos](#parte12)
24 | 13. [Capítulo 13 Algoritmos de ordenação e de busca](#parte13)
25 | 14. [Capítulo 14 Designs de algoritmos e técnicas](#parte14)
26 | 15. [Capítulo 15 Complexidade de algoritmos](#parte15)
27 | ---
28 |
29 |
30 | ## 1 - Capítulo 01 JavaScript – uma visão geral rápida
31 |
32 | ### - Estrutura de dados e algoritmos em JavaScript
33 | ### - Configurando o ambiente
34 | ### - Configuração mínima para trabalhar com JavaScript
35 | ### - Usando servidores web
36 | ### - http-server do Node.js
37 | ### - Básico sobre o JavaScript
38 |
39 | ```html
40 |
41 |
42 |
43 |
44 | 01
45 |
46 |
47 |
48 |
52 |
53 |
54 | ```
55 |
56 | ```js
57 | function output(t) {
58 | document.write('' + t + '
');
59 | }
60 |
61 | alert('Hello, World!');
62 | console.log('Hello, World!');
63 | output('Hello, World!');
64 | ```
65 |
66 | ### - Variáveis
67 |
68 | ```html
69 |
70 |
71 |
72 |
73 | 02
74 |
75 |
76 |
77 |
78 |
79 | ```
80 |
81 | ### - Escopo das variáveis
82 |
83 | ```js
84 | var num = 1; // {1}
85 | num = 3; // {2}
86 |
87 | var price = 1.5; // {3}
88 | var myName = 'Packt'; // {4}
89 | var trueValue = true; // {5}
90 | var nullVar = null; // {6}
91 | var und; // {7}
92 |
93 | console.log('num: ' + num);
94 | console.log('myName: ' + myName);
95 | console.log('trueValue: ' + trueValue);
96 | console.log('price: ' + price);
97 | console.log('nullVar: ' + nullVar);
98 | console.log('und: ' + und);
99 |
100 | // ******* Variable Scope
101 |
102 | var myVariable = 'global';
103 | myOtherVariable = 'global';
104 |
105 | function myFunction() {
106 | var myVariable = 'local';
107 | return myVariable;
108 | }
109 |
110 | function myOtherFunction() {
111 | myOtherVariable = 'local';
112 | return myOtherVariable;
113 | }
114 |
115 | console.log(myVariable); //{1}
116 | console.log(myFunction()); //{2}
117 |
118 | console.log(myOtherVariable); //{3}
119 | console.log(myOtherFunction()); //{4}
120 | console.log(myOtherVariable); //{5}
121 | ```
122 |
123 | ### - Operadores
124 |
125 | ```js
126 | /* Arithmetic operators */
127 | var num = 0; // {1}
128 | console.log('num value is ' + num);
129 |
130 | num = num + 2;
131 | console.log('New num value is ' + num);
132 |
133 | num = num * 3;
134 | console.log('New num value is ' + num);
135 |
136 | num = num / 2;
137 | console.log('New num value is ' + num);
138 |
139 | num++;
140 | num--;
141 |
142 | console.log('New num value is ' + num);
143 |
144 | console.log('num mod 2 value is ' + num % 2);
145 |
146 | /* Assignment operators */
147 | num += 1;
148 | num -= 2;
149 | num *= 3;
150 | num /= 2;
151 | num %= 3;
152 |
153 | console.log('New num value is ' + num);
154 |
155 | /* Assignment operators */
156 | console.log('num == 1 : ' + (num == 1));
157 | console.log('num === 1 : ' + (num === 1));
158 | console.log('num != 1 : ' + (num != 1));
159 | console.log('num > 1 : ' + (num > 1));
160 | console.log('num < 1 : ' + (num < 1));
161 | console.log('num >= 1 : ' + (num >= 1));
162 | console.log('num <= 1 : ' + (num <= 1));
163 |
164 | /* Logical operators */
165 | console.log('true && false : ' + (true && false)); // false
166 | console.log('true || false : ' + (true || false)); // true
167 | console.log('!true : ' + !true); // false
168 |
169 | /* Bitwise operators */
170 | console.log('5 & 1:', 5 & 1); // same as 0101 & 0001 (result 0001 / 1)
171 | console.log('5 | 1:', 5 | 1); // same as 0101 | 0001 (result 0101 / 5)
172 | console.log('~ 5:', ~5); // same as ~0101 (result 1010 / 10)
173 | console.log('5 ^ 1:', 5 ^ 1); // same as 0101 ^ 0001 (result 0100 / 4)
174 | console.log('5 << 1:', 5 << 1); // same as 0101 << 1 (result 1010 / 10)
175 | console.log('5 >> 1:', 5 >> 1); // same as 0101 >> 1 (result 0010 / 2)
176 |
177 | /* typeOf */
178 | console.log('typeof num:', typeof num);
179 | console.log('typeof Packt:', typeof 'Packt');
180 | console.log('typeof true:', typeof true);
181 | console.log('typeof [1,2,3]:', typeof [1, 2, 3]);
182 | console.log('typeof {name:John}:', typeof { name: 'John' });
183 |
184 | /* delete */
185 | var myObj = { name: 'John', age: 21 };
186 | delete myObj.age;
187 | console.log(myObj); // Object {name: "John"}
188 | ```
189 |
190 | ### - Verdadeiro e falso
191 |
192 | ```js
193 | function testTruthy(val) {
194 | return val ? console.log('truthy') : console.log('falsy');
195 | }
196 |
197 | testTruthy(true); // true
198 | testTruthy(false); // false
199 | testTruthy(new Boolean(false)); // true (object is always true)
200 |
201 | testTruthy(''); // false
202 | testTruthy('a'); // true
203 | testTruthy('Packt'); // true
204 | testTruthy(new String('')); // true (object is always true)
205 |
206 | testTruthy(1); // true
207 | testTruthy(-1); // true
208 | testTruthy(NaN); // false
209 | testTruthy(new Number(NaN)); // true (object is always true)
210 |
211 | testTruthy({}); // true (object is always true)
212 |
213 | var obj = { name: 'John' };
214 | testTruthy(obj); // true
215 | testTruthy(obj.name); // true
216 | testTruthy(obj.age); // false (property age does not exist)
217 | ```
218 |
219 | ### - Funções dos operadores de igualdade (== e ===)
220 |
221 | ```js
222 | // Packt == true
223 |
224 | console.log('packt' ? true : false);
225 | // outputs true
226 |
227 | console.log('packt' == true);
228 | // 1 - converts Boolean using toNumber
229 | // 'packt' == 1
230 | // 2 - converts String using toNumber
231 | // NaN == 1
232 | // outputs false
233 |
234 | console.log('packt' == false);
235 | // 1 - converts Boolean using toNumber
236 | // 'packt' == 0
237 | // 2 - converts String using toNumber
238 | // NaN == 0
239 | // outputs false
240 |
241 | console.log([0] == true);
242 | // 1 - converts Boolean using toNumber
243 | // [0] == 1
244 | // 2 - converts Object using toPrimitive
245 | // 2.1 - [0].valueOf() is not primitive
246 | // 2.2 - [0].toString is 0
247 | // 0 == 1
248 | // outputs false
249 |
250 | //* ****************************** ===
251 | console.log('packt' === true); // false
252 |
253 | console.log('packt' === 'packt'); // true
254 |
255 | var person1 = { name: 'John' };
256 | var person2 = { name: 'John' };
257 | console.log(person1 === person2); // false, different objects
258 | ```
259 |
260 | ### - Estruturas de controle
261 | ### - Instruções condicionais
262 | ### - Laços
263 | ### - Funções
264 | ### - Programação orientada a objetos em Javascript
265 | ### - Depuração e ferramentas
266 | ### - Depuração com o VSCode
267 | ### - Resumo
268 |
269 | [Voltar ao Índice](#indice)
270 |
271 | ---
272 |
273 |
274 | ## 2 - Capítulo 02 Visão geral sobre ECMAScript e TypeScript
275 |
276 | ### - ECMAScript ou JavaScript?
277 | ### - ES6, ES2015, ES7, ES2016, ES8, ES2017 e ES.Next
278 | ### - Tabela de compatibilidade
279 | ### - Usando o Babel.js
280 | ### - Funcionalidades das versões ECMAScript 2015+
281 | ### - let e const no lugar de var
282 | ### - Escopo de variáveis com let e const
283 | ### - Templates literais
284 | ### - Funções de seta
285 | ### - Valores default para parâmetros de funções
286 | ### - Declarando os operadores de espalhamento e rest
287 | ### - Propriedades melhoradas de objetos
288 | ### - Programação orientada a objetos com classes
289 | ### - Herança
290 | ### - Trabalhando com getters e setters
291 | ### - Operador de exponencial
292 | ### - Módulos
293 | ### - Executando módulos ES2015 no navegador e com o Node.js
294 | ### - Usando importações nativas da ES2015 no Node.js
295 | ### - Executando módulos ES2015 no navegador
296 | ### - Compatibilidade de versões anteriores a ES2015+
297 | ### - Introdução ao TypeScript
298 | ### - Inferência de tipo
299 | ### - Interfaces
300 | ### - Genéricos
301 | ### - Outras funcionalidades do TypeScript
302 | ### - Verificações do TypeScript em tempo de compilação em arquivos JavaScript
303 | ### - Resumo
304 |
305 | [Voltar ao Índice](#indice)
306 |
307 | ---
308 |
309 |
310 | ## 3 - Capítulo 03 Arrays
311 |
312 | ### - Por que devemos usar arrays?
313 | ### - Criando e inicializando arrays
314 | ### - Acessando elementos e fazendo uma iteração em um array
315 | ### - Acrescentando elementos
316 | ### - Inserindo um elemento no final do array
317 | ### - Usando o método push
318 | ### - Inserindo um elemento na primeira posição
319 | ### - Usando o método unshift
320 | ### - Removendo elementos
321 | ### - Removendo um elemento do final do array
322 | ### - Removendo um elemento da primeira posição
323 | ### - Usando o método shift
324 | ### - Adicionando e removendo elementos de uma posição específica
325 | ### - Arrays bidimensionais e multidimensionais
326 | ### - Iterando pelos elementos de arrays bidimensionais
327 | ### - Arrays multidimensionais
328 | ### - Referências para métodos de array em JavaScript
329 | ### - Juntando vários arrays
330 | ### - Funções de iteração
331 | ### - Iterando com o método every
332 | ### - Iterando com o método some
333 | ### - Iterando com forEach
334 | ### - Usando map e filter
335 | ### - Usando o método reduce
336 | ### - ECMAScript 6 e as novas funcionalidades de array
337 | ### - Iterando com o laço for…of
338 | ### - Usando o objeto @@iterator
339 | ### - Métodos entries, keys e values de array
340 | ### - Usando o método from
341 | ### - Usando o método Array.of
342 | ### - Usando o método fill
343 | ### - Usando o método copyWithin
344 | ### - Ordenando elementos
345 | ### - Ordenação personalizada
346 | ### - Ordenando strings
347 | ### - Pesquisa
348 | ### - ECMAScript 2015 – os métodos find e findIndex
349 | ### - ECMAScript 2016 – usando o método includes
350 | ### - Convertendo um array em uma string
351 | ### - Classe TypedArray
352 | ### - Arrays em TypeScript
353 | ### - Resumo
354 |
355 | [Voltar ao Índice](#indice)
356 |
357 | ---
358 |
359 |
360 | ## 4 - Capítulo 04 Pilhas
361 |
362 | ### - Criação de uma biblioteca de estruturas de dados e algoritmos JavaScript
363 | ### - Estrutura de dados de pilha
364 | ### - Criando uma classe Stack baseada em array
365 | ### - Push de elementos na pilha
366 | ### - Pop de elementos da pilha
367 | ### - Dando uma espiada no elemento que está no topo da pilha
368 | ### - Verificando se a pilha está vazia
369 | ### - Limpando os elementos da pilha
370 | ### - Usando a classe Stack
371 | ### - Criando uma classe JavaScript Stack baseada em objeto
372 | ### - Push de elementos na pilha
373 | ### - Verificando se a pilha está vazia e o seu tamanho
374 | ### - Pop de elementos da pilha
375 | ### - Dando uma espiada no topo e limpando a pilha
376 | ### - Criando o método toString
377 | ### - Protegendo os elementos internos da estrutura de dados
378 | ### - Convenção de nomenclatura com underscore
379 | ### - Classes ES2015 com símbolos no escopo
380 | ### - Classes ES2015 com WeakMap
381 | ### - Proposta para campos de classe na ECMAScript
382 | ### - Resolvendo problemas usando pilhas
383 | ### - Convertendo números decimais para binários
384 | ### - Algoritmo conversor de base
385 | ### - Resumo
386 |
387 | [Voltar ao Índice](#indice)
388 |
389 | ---
390 |
391 |
392 | ## 5 - Capítulo 05 Filas e deques
393 |
394 | ### - Estrutura de dados de fila
395 | ### - Criando a classe Queue
396 | ### - Inserção de elementos na fila
397 | ### - Remoção de elementos da fila
398 | ### - Dando uma espiada no elemento que está na frente da fila
399 | ### - Verificando se a pilha está vazia e o seu tamanho
400 | ### - Limpando a fila
401 | ### - Criando o método toString
402 | ### - Usando a classe Queue
403 | ### - Estrutura de dados de deque
404 | ### - Criando a classe Deque
405 | ### - Adicionando elementos na frente do deque
406 | ### - Usando a classe Deque
407 | ### - Resolvendo problemas usando filas e deques
408 | ### - Fila circular – Batata Quente
409 | ### - Verificador de palíndromo
410 | ### - Filas de tarefas em JavaScript
411 | ### - Resumo
412 |
413 | [Voltar ao Índice](#indice)
414 |
415 | ---
416 |
417 |
418 | ## 6 - Capítulo 06 Listas ligadas
419 |
420 | ### - Estrutura de dados da lista ligada
421 | ### - Criando a classe LinkedList
422 | ### - Inserindo elementos no final da lista ligada
423 | ### - Removendo elementos de uma posição específica da lista ligada
424 | ### - Percorrendo a lista com um laço até alcançar a posição desejada
425 | ### - Refatorando o método remove
426 | ### - Inserindo um elemento em qualquer posição
427 | ### - Método indexOf: devolvendo a posição de um elemento
428 | ### - Removendo um elemento da lista ligada
429 | ### - Métodos isEmpty, size e getHead
430 | ### - Método toString
431 | ### - Listas duplamente ligadas
432 | ### - Inserindo um novo elemento em qualquer posição
433 | ### - Removendo elementos de qualquer posição
434 | ### - Listas ligadas circulares
435 | ### - Inserindo um novo elemento em qualquer posição
436 | ### - Removendo elementos de qualquer posição
437 | ### - Listas ligadas ordenadas
438 | ### - Inserindo elementos na ordem
439 | ### - Criando a classe StackLinkedList
440 | ### - Resumo
441 |
442 | [Voltar ao Índice](#indice)
443 |
444 | ---
445 |
446 |
447 | ## 7 - Capítulo 07 Conjuntos
448 |
449 | ### - Estruturando um conjunto de dados
450 | ### - Criando uma classe Set
451 | ### - Método has(element)
452 | ### - Método add
453 | ### - Métodos delete e clear
454 | ### - Método size
455 | ### - Método values
456 | ### - Usando a classe Set
457 | ### - Operações em conjuntos
458 | ### - União de conjuntos
459 | ### - Intersecção de conjuntos
460 | ### - Aperfeiçoando o método intersection
461 | ### - Diferença entre conjuntos
462 | ### - Subconjunto
463 | ### - ECMAScript 2015 – a classe Set
464 | ### - Operações com a classe Set da ES2015
465 | ### - Simulando a operação de união
466 | ### - Simulando a operação de intersecção
467 | ### - Simulando a operação de diferença
468 | ### - Usando o operador de espalhamento
469 | ### - Multiconjuntos ou bags
470 | ### - Resumo
471 |
472 | [Voltar ao Índice](#indice)
473 |
474 | ---
475 |
476 |
477 | ## 8 - Capítulo 08 Dicionários e hashes
478 |
479 | ### - Estrutura de dados de dicionário
480 | ### - Criando a classe Dictionary
481 | ### - Verificando se uma chave está presente no dicionário
482 | ### - Definindo uma chave e um valor no dicionário, e a classe ValuePair
483 | ### - Removendo um valor do dicionário
484 | ### - Obtendo um valor do dicionário
485 | ### - Métodos keys, values e valuePairs
486 | ### - Iterando pelos ValuePairs do dicionário com forEach
487 | ### - Métodos clear, size, isEmpty e toString
488 | ### - Usando a classe Dictionary
489 | ### - Tabela hash
490 | ### - Criando uma classe HashTable
491 | ### - Criando uma função de hash
492 | ### - Inserindo uma chave e um valor na tabela hash
493 | ### - Obtendo um valor da tabela hash
494 | ### - Removendo um valor da tabela hash
495 | ### - Usando a classe HashTable
496 | ### - Tabela hash versus conjunto hash
497 | ### - Tratando colisões nas tabelas hash
498 | ### - Encadeamento separado
499 | ### - Método put
500 | ### - Método get
501 | ### - Método remove
502 | ### - Sondagem linear
503 | ### - Método put
504 | ### - Método get
505 | ### - Método remove
506 | ### - Criando funções melhores de hash
507 | ### - Classe Map da ES2015
508 | ### - Classes WeakMap e WeakSet da ES2015
509 | ### - Resumo
510 |
511 | [Voltar ao Índice](#indice)
512 |
513 | ---
514 |
515 |
516 | ## 9 - Capítulo 09 Recursão
517 |
518 | ### - Entendendo a recursão
519 | ### - Calculando o fatorial de um número
520 | ### - Fatorial iterativo
521 | ### - Fatorial recursivo
522 | ### - Pilha de chamadas
523 | ### - Limitação do tamanho da pilha de chamadas em JavaScript
524 | ### - Sequência de Fibonacci
525 | ### - Fibonacci iterativo
526 | ### - Fibonacci recursivo
527 | ### - Fibonacci com memoização
528 | ### - Por que usar recursão? É mais rápido?
529 | ### - Resumo
530 |
531 | [Voltar ao Índice](#indice)
532 |
533 | ---
534 |
535 |
536 | ## 10 - Capítulo 10 Árvores
537 |
538 | ### - Estrutura de dados de árvore
539 | ### - Terminologia de árvores
540 | ### - Árvore binária e árvore binária de busca
541 | ### - Criando as classes Node e BinarySearchTree
542 | ### - Inserindo uma chave na BST
543 | ### - Percorrendo uma árvore
544 | ### - Percurso em-ordem
545 | ### - Percurso pré-ordem
546 | ### - Percurso pós-ordem
547 | ### - Pesquisando valores em uma árvore
548 | ### - Pesquisando valores mínimos e máximos
549 | ### - Pesquisando um valor específico
550 | ### - Removendo um nó
551 | ### - Removendo uma folha
552 | ### - Removendo um nó com um filho à esquerda ou à direita
553 | ### - Removendo um nó com dois filhos
554 | ### - Árvores autobalanceadas
555 | ### - Árvore de Adelson-Velskii e Landi (árvore AVL)
556 | ### - Altura de um nó e o fator de balanceamento
557 | ### - Operações de balanceamento – rotações na árvore AVL
558 | ### - Rotação Esquerda-Esquerda: rotação simples à direita
559 | ### - Rotação Direita-Direita: rotação simples à esquerda
560 | ### - Esquerda-Direita: rotação dupla à direita
561 | ### - Direita-Esquerda: rotação dupla à esquerda
562 | ### - Inserindo um nó na árvore AVL
563 | ### - Removendo um nó da árvore AVL
564 | ### - Árvore rubro-negra
565 | ### - Inserindo um nó na árvore rubro-negra
566 | ### - Verificando as propriedades da árvore rubro-negra após a inserção
567 | ### - Rotações na árvore rubro-negra
568 | ### - Resumo
569 |
570 | [Voltar ao Índice](#indice)
571 |
572 | ---
573 |
574 |
575 | ## 11 - Capítulo 11 Heap binário e heap sort
576 |
577 | ### - Estrutura de dados do heap binário
578 | ### - Criando a classe MinHeap
579 | ### - Representação da árvore binária com um array
580 | ### - Inserindo um valor no heap
581 | ### - Operação de sift up
582 | ### - Encontrando os valores mínimo e máximo no heap
583 | ### - Extraindo os valores mínimo e máximo do heap
584 | ### - Operação de sift down
585 | ### - Criando a classe MaxHeap
586 | ### - Algoritmo de heap sort
587 | ### - Resumo
588 |
589 | [Voltar ao Índice](#indice)
590 |
591 | ---
592 |
593 |
594 | ## 12 - Capítulo 12 Grafos
595 |
596 | ### - Terminologia dos grafos
597 | ### - Grafos direcionados e não direcionados
598 | ### - Representando um grafo
599 | ### - A matriz de adjacências
600 | ### - Lista de adjacências
601 | ### - Matriz de incidências
602 | ### - Criando a classe Graph
603 | ### - Percorrendo grafos
604 | ### - Busca em largura (BFS)
605 | ### - Encontrando os caminhos mais curtos usando BFS
606 | ### - Estudos adicionais sobre algoritmos de caminhos mais curtos
607 | ### - Busca em profundidade (DFS)
608 | ### - Explorando o algoritmo DFS
609 | ### - Ordenação topológica usando DFS
610 | ### - Algoritmos de caminho mais curto
611 | ### - Algoritmo de Dijkstra
612 | ### - Algoritmo de Floyd-Warshall
613 | ### - Árvore de extensão mínima (MST)
614 | ### - Algoritmo de Prim
615 | ### - Algoritmo de Kruskal
616 | ### - Resumo
617 |
618 | [Voltar ao Índice](#indice)
619 |
620 | ---
621 |
622 |
623 | ## 13 - Capítulo 13 Algoritmos de ordenação e de busca
624 |
625 | ### - Algoritmos de ordenação
626 | ### - Bubble sort
627 | ### - Bubble sort melhorado
628 | ### - Selection sort
629 | ### - Insertion sort
630 | ### - Merge sort
631 | ### - Quick sort
632 | ### - Processo de partição
633 | ### - Quick sort em ação
634 | ### - Counting sort
635 | ### - Bucket sort
636 | ### - Radix sort
637 | ### - Algoritmos de busca
638 | ### - Busca sequencial
639 | ### - Busca binária
640 | ### - Busca por interpolação
641 | ### - Algoritmos de embaralhamento
642 | ### - Algoritmo de embaralhamento de Fisher-Yates
643 | ### - Resumo
644 |
645 | [Voltar ao Índice](#indice)
646 |
647 | ---
648 |
649 |
650 | ## 14 - Capítulo 14 Designs de algoritmos e técnicas
651 |
652 | ### - Dividir e conquistar
653 | ### - Busca binária
654 | ### - Programação dinâmica
655 | ### - Problema do número mínimo de moedas para troco
656 | ### - Problema da mochila
657 | ### - Maior subsequência comum
658 | ### - Multiplicação de cadeia de matrizes
659 | ### - Algoritmos gulosos
660 | ### - Problema do número mínimo de moedas para troco
661 | ### - Problema fracionário da mochila
662 | ### - Algoritmos de backtracking
663 | ### - Rato em um labirinto
664 | ### - Solucionador de sudoku
665 | ### - Introdução à programação funcional
666 | ### - Programação funcional versus programação imperativa
667 | ### - ES2015+ e a programação funcional
668 | ### - Caixa de ferramentas funcional de JavaScript – map, filter e reduce
669 | ### - Bibliotecas e estruturas de dados funcionais de JavaScript
670 | ### - Resumo
671 |
672 | [Voltar ao Índice](#indice)
673 |
674 | ---
675 |
676 |
677 | ## 15 - Capítulo 15 Complexidade de algoritmos
678 |
679 | ### - Notação big-O
680 | ### - Compreendendo a notação big-O
681 | ### - O(1)
682 | ### - O(n)
683 | ### - O(n2)
684 | ### - Comparando as complexidades
685 | ### - Estruturas de dados
686 | ### - Grafos
687 | ### - Algoritmos de ordenação
688 | ### - Algoritmos de busca
689 | ### - Introdução à teoria de NP-completo
690 | ### - Problemas impossíveis e algoritmos heurísticos
691 | ### - Divertindo-se com algoritmos
692 | ### - Resumo
693 |
694 |
695 | [Voltar ao Índice](#indice)
696 |
697 | ---
698 |
699 |
--------------------------------------------------------------------------------