(Javascript) Lista Encadeada/Ligada em JS
Consegui implementar um sistema de lista encadeada em javascript, de forma bastante eficiente, conseguimos atingir velocidades em loopings extremas, segue um código test
<script> // Criação da array especial com 2000 elementos var arrSpecial = new Array(2000); // Criar variáveis que possam ser passadas por referencia na função intervalChangeItter var arrInit = new Object(); var arrFinal = new Object(); // Preparar propriedade do objeto com valor inicial -1 arrInit.referencia = -1; arrFinal.referencia = -1; // Colocar números a serem passados intervalChangeItter(arrSpecial, 3, arrInit, arrFinal); intervalChangeItter(arrSpecial, 7, arrInit, arrFinal); intervalChangeItter(arrSpecial, 9, arrInit, arrFinal); intervalChangeItter(arrSpecial, 10, arrInit, arrFinal); // Executar o loop lista encadeada document.write("Usando Lista Encadeada:<br/>") for(var i = arrInit.referencia ; i != undefined; i = arrSpecial[i ]) { document.write(i + "<br/>") } // Executar o for each i = 0; document.write("Usando Foreach:<br/>") for(var i in arrSpecial) { document.write(arrSpecial[i ] + "<br/>") } // Executar o for COMUM i = 0; document.write("Usando FOR comum:<br/>") for(i = 0; i < arrSpecial.length; i++) { document.write(arrSpecial[i ] + "<br/>") } // Funcao function intervalChangeItter(array, valor, inicio, ultimoNumeroVar) { if (array[valor] != undefined || valor == undefined) return false; if (inicio.referencia == -1) { inicio.referencia = valor; return true; } if (valor < inicio.referencia) { array[valor] = inicio.referencia; return inicio.referencia = valor, true; } if (array[inicio.referencia] == undefined) { array[inicio.referencia] = valor ultimoNumeroVar.referencia = valor return true; } array[ultimoNumeroVar.referencia] = valor ultimoNumeroVar.referencia = valor return true; } </script>
Resultados:
64 ms-> Lista Encadeada
4911 ms -> Foreach
51893 ms-> For ComumRápido, não?Quando puder coloco mais modificações e otimizações, por enquanto é isto