Skip to content

Instantly share code, notes, and snippets.

@lricoy
Created April 15, 2018 20:37
Show Gist options
  • Save lricoy/2cc4a1bb50e26247ede41d56a4a3b9cc to your computer and use it in GitHub Desktop.
Save lricoy/2cc4a1bb50e26247ede41d56a4a3b9cc to your computer and use it in GitHub Desktop.
Exemplo de lista encadeadas para grupo de estudos
class Nodo {
public data: number; // Valor que o elemento contem
public proximo: Nodo; // referencia para o próximo item da lista
constructor(data, proximo?) {
this.data = data;
this.proximo = proximo;
}
}
var primeiro = new Nodo(1, new Nodo(2, new Nodo(3, null))) // [1] -> [2] -> [3] -> null
var novoPrimeiro = new Nodo(-1, primeiro); // [-1] -> [1] -> [2] -> [3] -> null
var auxiliar = novoPrimeiro;
while (auxiliar != null) {
console.log(auxiliar.data);
auxiliar = auxiliar.proximo;
}
class Lista {
public primeiro: Nodo;
public ultimo: Nodo;
constructor(primeiro?: Nodo) {
this.primeiro = null;
if (primeiro) {
this.primeiro = primeiro;
}
}
adicionarNoFinal (valor: number) {
if (this.primeiro == null) {
this.adicionarNoPrincipio(valor);
return;
}
var aux = new Nodo(valor);
this.ultimo.proximo = aux;
this.ultimo = aux;
}
adicionarNoPrincipio (valor: number) {
if (this.primeiro == null) {
var aux = new Nodo(valor);
this.primeiro = aux;
this.ultimo = aux;
return;
}
this.primeiro = new Nodo(valor, this.primeiro);
}
}
var lista1 = new Lista(new Nodo(1)); // [1] -> null
var lista2 = new Lista(new Nodo(2)); // [2] -> null
console.log(lista1.primeiro.data); // 1
console.log(lista2.primeiro.data); // 2
var lista3 = new Lista();
lista3.adicionarNoFinal(5); // [5] -> null
lista3.adicionarNoFinal(6); // [5] -> [6] -> null
lista3.adicionarNoFinal(7); // [5] -> [6] -> [7] -> null
console.log(lista3.primeiro.data); // 5
console.log(lista3.primeiro.proximo.data); // 6
lista3.adicionarNoFinal(1); // [5] -> [6] -> [7] -> [1] -> null
console.log(lista3.primeiro.proximo.proximo.data); // 7
console.log(lista3.primeiro.proximo.proximo.proximo.data); // 1
var lista4 = new Lista();
lista4.adicionarNoPrincipio(10); // [10] -> null
console.log(lista4.primeiro.data);// 10
lista4.adicionarNoPrincipio(11); // [11] -> [10] -> null
console.log(lista4.primeiro.data) // 11
console.log(lista4.primeiro.proximo.data) //10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment